Eu tenho o nginx rodando como um proxy reverso. Atualmente, isso está fornecendo apenas terminação SSL centralizada e conectividade com a Internet. Eu quero habilitar o cache para conteúdo estático.
A configuração de um host virtual no proxy se parece com ....
server {
listen 443 ssl http2;
server_name www.example.com;
...
location / {
include snippets/proxydefaults.conf;
proxy_pass http://www.example.com.origin/;
}
}
Não estou confiante de que o cache nos servidores de origem esteja configurado corretamente, portanto, só quero armazenar em cache coisas que sei que são arquivos estáticos. Se eu aninhar a configuração de cache, preciso repetir a configuração para aplicar o proxy ou isso é herdado do local pai....
server {
listen 443 ssl http2;
server_name www.example.com;
...
location / {
include snippets/proxydefaults.conf;
proxy_pass http://www.example.com.origin/;
location ~* \.(gif|png|jpg|jpeg|js|css)$ {
proxy_cache default_cache;
# do I need to explicitly add another proxy_pass directive here?
}
}
}
Os manipuladores de solicitação são sempre definidos explicitamente para um local. Portanto, proxy_pass não será herdado.
Locais aninhados vão te morder mais cedo ou mais tarde; as regras de herança não triviais e ter que copiar e colar as configurações são causas muito prováveis de problemas desnecessários.
Em vez disso, você pode definir uma variável (
set $dont_cache_this 1
), defini-la seletivamente como zero no conteúdo "estático conhecido" e usá-la em conjunto com a diretiva proxy_no_cache .