
Tengo problemas con el expires
campo del encabezado. Las siguientes reglas de nginx me dan este encabezado (sin encabezado que caduque). ¿Ideas de por qué no se pasan los encabezados de vencimiento?
Encabezado para: /css/v1/afile.css
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 14 Sep 2013 07:29:59 GMT
Content-Type: text/css
Content-Length: 12548
Last-Modified: Sat, 11 May 2013 11:05:51 GMT
Connection: keep-alive
Accept-Ranges: bytes
Configuración de Nginx:
server {
listen 80 default_server;
server_name _;
root /var/www/apps/myapp/public/app/webroot;
index index.php index.html index.htm;
server_tokens off;
access_log /var/www/apps/myapp/logs/access.log;
error_log /var/www/apps/myapp/logs/error.log;
client_max_body_size 20M;
rewrite_log on;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ /(js|css)/v[0-9]+/(.*) {
access_log off;
expires 7d;
add_header Cache-Control public;
try_files $uri $uri/ /$1/$2;
}
# Pass the PHP scripts to FastCGI server
location ~ \.php$ {
fastcgi_pass backend;
fastcgi_index index.php;
fastcgi_intercept_errors on; # to support 404s for PHP files not found
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Respuesta1
Lo siguiente debería funcionar para mostrar el encabezado de caducidad que se configuró en el mismo bloque de ubicación...
try_files $uri $uri/ /$1/$2 =404;
Según la wiki de Nginx,archivos_de_pruebadebe terminar con un URI o con un código de estado. Puede obtener más información sobre por qué no se establecen caducidades, si habilitadepuración en Nginx.
Actualizar:
¿Ideas de por qué no se pasan los encabezados de vencimiento?
Habilité la depuración para descubrir esta interesante situación. Esto es lo que encontré...
Aquí hay una cita directa del artículo wiki de try_files vinculado anteriormente...
Si no se encontró ninguno de los archivos, se realiza una redirección interna a la uri especificada en el último parámetro.
Entonces, cuando usaste el siguiente código...
try_files $uri $uri/ /$1/$2;
el nginx no pudo encontrar $uri
y $uri/
(en su caso /css/v1/afile.css y /css/v1/afile.css/), se realiza una redirección interna al URI especificado en el último parámetro. Entonces, después de la redirección interna, /$1/$2
se encuentra la ubicación (en su caso /css/afile.css),en otro bloque de ubicación. Dado que lo ejecuta otro bloque de ubicación que no tiene vencimientos, no vio vencimientos.