Estoy tratando de crear un archivo nginx conf que tenga poca repetición en él. Estoy usando nginx para servir archivos estáticos, y proxies 404 o contenidos PHP para la ubicación @varnish llamado:Cómo tener múltiples bloques de ubicación use el mismo nombre @ ubicación
location @varnish {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
proxy_pass http://localhost:6081;
proxy_set_header Request-URI $request_uri;
}
Para la situación "normal" por el que nginx debe comprobar para ver si tiene un archivo y luego pasar hasta el back-end, el siguiente funciona bien:
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
access_log off;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
expires max;
open_file_cache_valid 120m;
try_files $uri @varnish;
}
sin embargo, para PHP, ni siquiera quiero que probar el archivo, se debe simplemente redirigir inmediatamente la solicitud de @varnish:
location ~ \.php$ {
rewrite . @varnish last;
}
Sin embargo, esto no parece funcionar. Parece un dolor tener dos bloques separados casi idénticos (uno para @backend y otro para php) que hacen referencia al mismo proxy, y es el tipo de problema en el que los humanos pueden olvidarse de poner algo en uno y no en el otro.
¡Funcionó como un encanto! – shrikeh