Como eu escrevo corretamente uma instrução “ou” em um bloco de localização Nginx?

2

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 /" na 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, mas não consigo corresponder as coisas que desejo. Como faço para escrever um bom ou uma declaração no meu arquivo de configuração?

    
por Dave 03.03.2018 / 01:01

1 resposta

2

Em nginx, se é mal . Mas se você realmente quiser fazer assim, veja como você faria:

if ($request_uri ~* "($\/image\/.*)|(.*\.(ico|gif|jpe?g|png)$)") {

Essencialmente, basta combinar os regexes.

    
por 03.03.2018 / 01:16