O mais provável é que algum cabeçalho extra esteja impedindo que o nginx armazene a resposta em cache.
Estou testando a criação de um cache no nginx e o trabalho muito bem em ambos os diretórios que configurei, exceto o seguinte: Quando tento armazenar em cache uma imagem gerada pelo php, ela simplesmente age como um proxy para meu servidor apache em execução o script de geração de imagem php. Ele funciona bem em qualquer arquivo estático de html, css, js ou texto. Como posso obter o nginx para armazenar em cache as imagens geradas por php também? Estou pensando que algo pode estar faltando na minha geração do PHP para fazer o nginx pensar que é um arquivo que pode ser armazenado em cache, mas não tenho certeza de onde ir a partir daqui.
Aqui está o meu nginx.conf:
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
proxy_cache_path /var/www/cache/muncherelli/cdn levels=1:2 keys_zone=muncherelli:8m max_size=1000m inactive=600m;
proxy_cache_path /var/www/cache/mi/client/images levels=1:2 keys_zone=miclient:8m max_size=1000m inactive=600m;
proxy_temp_path /var/www/cache/tmp;
server {
location /muncherelli/cdn/ {
proxy_pass http://muncherelli.com/wp-content/;
proxy_cache muncherelli;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
}
location /mi/client/images/ {
proxy_pass http://client.images.example.com/;
proxy_cache miclient;
proxy_cache_valid 200 302 60m;
proxy_cache_valid 404 1m;
}
}
}
e a parte de criação de imagem do meu script php:
$img = imagecreatefromjpeg($full_image_path);
header('Content-Type: image/jpeg');
imagejpeg($img);
imagedestroy($img);
Como obtenho o nginx para armazenar essas imagens em cache também?