eu tenho configuração
location ~ \.(pdf)$ {
expires 2h;
}
location / {
...backend rules...
}
Agora eu quero que o primeiro bloco seja executado apenas para pdfs realmente existentes, caso contrário a solicitação seria passada para o backend. Suponho que devo adicionar no primeiro bloco de localização try_files $uri @backend
:
location ~ \.(pdf)$ {
try_files $uri @backend;
expires 2h;
}
location / {
...backend rules...
}
location @backend {
...same backend rules...
}
Mas acontece que ambos os locais /
e @backend
serão absolutamente idênticos, existe alguma maneira de combiná-los ou devo apenas fazer dois blocos idênticos?
Como solução alternativa, você pode encurtar
location
seuIsso produzirá uma
stat
chamada de sistema extra para cada solicitação, mas como é o diretório raiz da web que serástat
'ed, essas chamadas devem ser algum tipo de cache pelo kernel e não devem ser um impacto sério no desempenho.PS
Você não precisa de um grupo de captura para sua localização regex, apenas
location ~ \.pdf$ { ... }
será suficiente (ainda que com um desempenho um pouco melhor).Atualizar
Mais uma sugestão que permitiria reduzir o número de locais: