Eu tenho URLs que contêm uma string de impedimento de cache. Quero reescrever esses URLs sem a string de impedimento de cache e, em seguida, enviar os URLs reescritos que correspondem a um determinado critério (por exemplo, arquivos de áudio / vídeo) para um script PHP.
por exemplo,
/style.1233333555.css => /style.css
/video.3232474527.mp4 => /video.mp4 => /index.php
Aqui está o que eu tenho até agora:
server {
listen 80 default_server;
server_name _;
#force all traffic to be encrypted
return 301 https://xyz.com$request_uri;
}
server {
listen 443 ssl;
server_name xyz.com;
ssl on;
ssl_session_timeout 5m;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
ssl_certificate /etc/nginx/ssl/xyz.com.crt;
ssl_certificate_key /etc/nginx/ssl/xyz.com.key;
root /srv/xyz.com;
index index.php;
#for all files in the format "name.0000000.ext" e.g. "child.3126043152.jpg"
location ~ (.*\/)?([^/]+)\.[a-zA-Z0-9]+(@2x)?\.([^\.]+)$ {
#cache the files for as long as possible
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
#remove the cache busting string and rewrite to the file's actual url
rewrite (.*\/)?([^/]+)\.[a-zA-Z0-9]+(@2x)?\.([^\.]+)$ $1$2$3.$4 last;
}
#pass media files through index.php so we can duplicate the actual file
rewrite \.(mp3|mp4|m4v|avi)$ /index.php;
#specify which files we can X-Accel-Redirect to
location /media {
internal;
alias /srv/xyz.com;
}
#pass anything that doesn't exist through index.php
location / {
try_files $uri $uri/ /index.php;
}
#tell nginx how to handle PHP files
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Esta configuração não produz erros, mas não está encaminhando áudio / vídeos para o script PHP.
O que estou fazendo de errado?
Obrigado.