Eu tenho tentado armazenar em cache imagens que estão armazenadas no servidor nginx, eu sou bem novo aqui e para o nginx eu o instalei e configurei com o php5-fpm, tenho lido muitos tutoriais sobre cache de imagens e arquivos php. Eu consegui armazenar em cache os arquivos PHP, mas não posso armazenar em cache as imagens aqui é parte do arquivo de configuração nginx:
fastcgi_cache_path /etc/nginx/cache levels=1:2 keys_zone=MYAPP:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
add_header X-Cache $upstream_cache_status;
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
set $skip_cache 0;
# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_cache MYAPP;
fastcgi_cache_valid 200 60m;
}
location ~* ^.+\.(jpg|jpeg|gif|png)$ {
access_log off; log_not_found off; expires 1d;
}
location ~ /\. { deny all; access_log off; log_not_found off; }
}
agora, quando executo curl -I http://xxx.xxx.xxx.xxx/script.php
, posso ver o md5 do script criado na pasta /etc/nginx/cache
e posso ver o X-Cache : HIT
No entanto, quando executo o arquivo curl -I http://xxx.xxx.xxx.xxx/image.jpg
no criado no /etc/nginx/cache
e tenho o seguinte resultado no console:
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Tue, 17 Jun 2014 08:14:37 GMT
Content-Type: image/jpeg
Content-Length: 55936
Last-Modified: Tue, 17 Jun 2014 04:30:11 GMT
Connection: keep-alive
ETag: "539fc453-da80"
Expires: Wed, 18 Jun 2014 08:14:37 GMT
Cache-Control: max-age=86400
Accept-Ranges: bytes
agora parece bem, no entanto, quando eu o executo novamente, a data de validade continuará mudando como se estivesse chamando uma nova imagem, não o cache
HTTP/1.1 200 OK
Server: nginx/1.4.6 (Ubuntu)
Date: Tue, 17 Jun 2014 08:16:34 GMT
Content-Type: image/jpeg
Content-Length: 55936
Last-Modified: Tue, 17 Jun 2014 04:30:11 GMT
Connection: keep-alive
ETag: "539fc453-da80"
Expires: Wed, 18 Jun 2014 08:16:34 GMT
Cache-Control: max-age=86400
Accept-Ranges: bytes
minhas perguntas são:
1- as imagens em cache devem ser mostradas na pasta cache?
2 - o fastcgi
é capaz de armazenar em cache as imagens?
3- o que posso fazer para corrigir o problema de cache de imagem?
Desculpe pelas perguntas para iniciantes, mas não consigo encontrar a resposta.