Nginx: bug usando if in location, como eu corrijo

1

Estou usando o nginx no modo de proxy reverso. Na minha seção de servidor, eu tenho esse código para definir o controle de expiração e cache dos meus arquivos estáticos.

     location ~* ^.+\.(css|js|png|gif)$ {
         access_log off;
         expires max;
         add_header Cache-Control public;
         if (!-f $request_filename) {
           proxy_pass  http://localhost:82;
         }

     }

Isso é obviamente criando problemas . Alguém pode me ajudar a corrigir esse código para usar try_files ou rewrite ?

    
por Quintin Par 21.06.2011 / 09:28

1 resposta

4

Existem pelo menos 2 técnicas.

error_page

Antes da introdução da diretiva try_files , o método comum era interceptar o código de erro 404 e processar a solicitação com um local nomeado, por exemplo,

location ~* \.(css|js|png|gif)$ {
  access_log off;
  expires max;
  add_header Cache-Control public;
  error_page 404 = @upstream;
}

try_files

O equivalente usando try_files seria

location ~* \.(css|js|png|gif)$ {
  access_log off;
  expires max;
  add_header Cache-Control public;
  try_files $uri @upstream;
}

E a localização indicada é a mesma para ambos os cenários:

location @upstream {
  proxy_pass http://localhost:82;
}
    
por 21.06.2011 / 10:41

Tags