
Estou usando o Nginx no CentOS 7. Quero adicionar um cabeçalho de controle de cache para arquivos que terminam em uma extensão específica ou que contêm uma string "/image/" no URL. Eu tentei isso
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;
}
}
mas ao reiniciar o servidor, estou recebendo um
invalid condition "$request_uri" in /etc/nginx/conf.d/scale.conf:16
erro. Se eu remover " | ($request_uri ~* "/image/")" da linha problemática, tudo será reiniciado corretamente, mas não consigo combinar o que desejo. Como escrevo uma declaração adequada em meu arquivo de configuração?
Responder1
No nginx,se é mau. Mas se você realmente quiser fazer dessa maneira, veja como você faria:
if ($request_uri ~* "($\/image\/.*)|(.*\.(ico|gif|jpe?g|png)$)") {
Essencialmente, basta combinar as expressões regulares.