
Estoy usando Nginx en CentOS 7. Quiero agregar un encabezado de control de caché para archivos que terminan en una extensión particular o que contienen una cadena "/image/" en la URL. Probé esto
location / {
proxy_pass http://scale; # match the name of upstream directive which is defined above
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ($request_uri ~* ".(ico|gif|jpe?g|png)$") | ($request_uri ~* "/image/") {
expires 60d;
access_log off;
add_header Pragma public;
add_header Cache-Control "public";
break;
}
}
pero al reiniciar el servidor, aparece un
invalid condition "$request_uri" in /etc/nginx/conf.d/scale.conf:16
error. Si elimino " | ($request_uri ~* "/image/")" de la línea problemática, todo se reinicia bien, pero luego no puedo hacer coincidir las cosas que quiero. ¿Cómo escribo una declaración adecuada o en mi archivo de configuración?
Respuesta1
En nginx,si es malo. Pero si realmente quieres hacerlo de esa manera, así es como lo harías:
if ($request_uri ~* "($\/image\/.*)|(.*\.(ico|gif|jpe?g|png)$)") {
Básicamente, simplemente combine las expresiones regulares.