Meu melhor palpite é que você não tenha compilado headers_more no Nginx. Para confirmar se você adicionou ou não isso ao seu bloco de localização da imagem
add_header XYZ "TESTING";
Poste a saída de "curl -i", ou você pode ver os cabeçalhos com o Firefox e o plugin "Live HTTP Headers". Além disso, abandone o "pragma", é antigo e desnecessário. Basicamente, copie meu bloco abaixo, pelo menos as partes que você precisa.
Se você quiser instruções sobre como criar o Nginx com headers_mode, consulte meu tutorial aqui .
Para referência, aqui está o meu próprio blog de localização que faz algo semelhante
# Cache images on the client. Don't log errors or access. Block hotlinking.
location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ {
log_not_found off; access_log off;
valid_referers none blocked server_names ~($host) ~(googleusercontent|google|bing|yahoo);
if ($invalid_referer) {
rewrite (.*) /stop-stealing-images.png redirect;
# drop the 'redirect' flag for redirect without URL change (internal rewrite)
}
# Set up caching - 8 days for static resources. Remove the old unnecessary Pragma and hide the server version
more_clear_headers "Cache-Control";
add_header Cache-Control "public, max-age=691200, s-maxage=691200";
more_clear_headers Server; more_clear_headers "Pragma"; more_clear_headers "Expires";
# add_header Z_LOCATION "wpmu STATIC RESOURCES REGEX"; add_header URI $uri; # Nginx Debugging
}