Não tenho reputação suficiente para comentar por que a resposta aceita faria com que os arquivos não apareçam mais, mas descobri e gostaria de ajudar!
Versão resumida:
Certifique-se de ter um diretório raiz especificado para o seu bloco de localização nas imagens, se você não tiver um conjunto global!
Versão longa abaixo:
Primeiro, meu método de implementar essa solução foi muito semelhante a esta resposta , onde você escreve a regra ( como na resposta aceita):
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
em um arquivo img-cache.conf
e inclua esse arquivo na sua diretiva server {...}
.
Meu exemplo de somesite.com na minha pasta disponível em sites:
#Image Caching
include /etc/nginx/conf/img-cache.conf;
Dessa forma, você pode adicionar o bloco de local de armazenamento de imagens em cache a vários sites em execução.
Em segundo lugar, eu tenho uma situação onde meu / var / www / contém duas pastas que eu permito como public_html - seguro e treinamento, então eu tenho que fazer blocos de localização específicos na diretiva do servidor do meu site, destacando essas pastas.
Como tal, não tenho um conjunto de diretórios raiz global .
Portanto, quando você bloqueia a sua imagem, você pode não estar fornecendo a ela um diretório raiz a partir do qual procurar as imagens!
Minha solução foi então:
location ~ ^/training.+\.(?:ico|css|js|gif|jpe?g|png)$ {
root /var/www/;
expires 7d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri 404;
}
location ~ ^/.+\.(?:ico|css|js|gif|jpe?g|png)$ {
root /var/www/secure;
expires 7d;
add_header Pragma public;
add_header Cache-Control "public";
try_files $uri 404;
}