Есть интернет-магазин на платной cms от "све-арт", cms конечно полный ацтой, но сайт делался за бабло и у фирмы основной интернет-магазин на этой cms и давно...
Особенность этой cms что в ней идут не прямые ссылки на картинки товаров, а через какую то хрень, которая забирает картинки из кеша картинок, который делает сама cms, сжимает гзипом картинки, кладет в другую папку подписывая их по id и убирая напрочь расширение файлов у них и делая ссылку на картинки такого вида:
<img alt="" src="viewImg.php?img_id=40828&width=210&height=280&tabname=Goods" style="cursor:pointer;" width="210" height="280">
или так:
<img alt="" src="viewImg.php?img_id=40828&width=390&height=520&tabname=Goods" width="390" height="520">
И я не могу добиться того чтобы nginx закешировал такие картинки, я всегда получаю "200 ОК" при каждом обновлении страницы в браузере...
Что мне нужно сделать чтобы nginx закешировал эти картинки?
Вот код который прописан в nginx:
Код: Выделить всё
user nginx;
# Число рабочих процессов, рекомендуется ставить по количеству ядер
worker_processes 2;
worker_cpu_affinity 0101 1010;
# Уменьшает число системных вызовов gettimeofday(), что приводит к увеличению производительности
timer_resolution 100ms;
# Изменяет ограничение на число используемых файлов RLIMIT_NOFILE для рабочего процесса.
worker_rlimit_nofile 8192;
# Директива задаёт приоритет рабочих процессов от -20 до 20 (отрицательное число означает более высокий приоритет).
worker_priority -10;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 4096;
use epoll;
}
http {
reset_timedout_connection on;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 5;
keepalive_timeout 30 15;
include mime.types;
default_type application/octet-stream;
proxy_ignore_headers Expires Cache-Control;
proxy_cache_path /var/cache/nginx/cache/site levels=1:2 keys_zone=two:16m inactive=7d max_size=512m;
proxy_temp_path /var/cache/nginx/temp;
proxy_buffering on;
proxy_buffer_size 64k;
proxy_buffers 16 64k;
#После скольких запросов результат запроса попадет в кеш
proxy_cache_min_uses 1;
#Кешировать результат выполнения запроса с кодом 200, 301 и 302 на 30 минут
proxy_cache_valid 200 301 302 1h;
proxy_cache_valid 404 500 501 502 503 504 505 506 507 509 510 1m;
proxy_cache_valid any 1m;
#При получении от бекэнда одного из перечисленных кодов
#ответов разрешается использовать "несвежий"
#кешированный результат выполнения запроса.
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
server_tokens off;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
access_log off;
gzip off;
#gzip_static on;
#gzip_min_length 1100;
#gzip_proxied expired no-cache no-store private auth;
#gzip_buffers 64 8k;
#gzip_http_version 1.1;
#gzip_types text/plain application/xml application/x-javascript text/javascript text/css;
#gzip_disable "msie6";
#gzip_disable Firefox/([0-2]\.|3\.0);
#gzip_disable Chrome/2;
#gzip_disable Safari;
#gzip_comp_level 3;
limit_conn_zone $binary_remote_addr zone=addr:10m;
client_max_body_size 10M;
charset on;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
output_buffers 2 64k;
include blockips.conf;
log_format isp '$bytes_sent $request_length';
server {
listen xxx.xxx.xxx.xx:80;
server_name www.site.ru;
rewrite ^ http://site.ru$request_uri? permanent; #301 redirect
}
server {
listen xxx.xxx.xxx.xx:80;
server_name site.ru;
proxy_temp_path /var/cache/nginx/site.ru;
rewrite ^(/manager/.*)$ https://$host$1 permanent;
rewrite ^(/myadmin/.*)$ https://$host$1 permanent;
rewrite ^(/phpmyadmin/.*)$ https://$host$1 permanent;
error_page 404 = @fallback;
charset windows-1251;
location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/) {
proxy_pass http://xxx.xxx.xxx.xx:8080;
proxy_redirect http://site.ru:8080/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
proxy_pass http://xxx.xxx.xxx.xx:8080;
proxy_redirect http://site.ru:8080/ /;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_buffer_size 16k;
proxy_buffers 16 16k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_cache_valid 200 1h;
open_file_cache max=1024 inactive=600s;
open_file_cache_valid 2000s;
open_file_cache_min_uses 1;
open_file_cache_errors on;
proxy_cache two;
proxy_cache_use_stale updating error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
proxy_cache_key "$host$uri?$args$cookie_uid$cookie_autol$cookie_autop";
proxy_no_cache $cookie_orderData $cookie_nocache $arg_nocache $arg_comment;
proxy_cache_bypass $cookie_orderData $cookie_nocache $arg_nocache $arg_comment;
index index.php;
}
location ~* ^.+\.(jpg|jpeg|gif|png|ico)$ {
root /var/www/emall/data/www/site.ru;
expires 5d;
access_log off;
add_header Cache-Control public;
}
location ~* ^.+\.(js|css) {
root /var/www/emall/data/www/site.ru;
access_log off;
add_header Pragma "no-cache";
expires -1;
add_header Last-Modified "Thu, 1 January 1970 00:00:00 GMT";
add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
}
location ~* ^.+\.(html|htm|shtml|txt|htc)$ {
root /var/www/emall/data/www/site.ru;
expires 5m;
add_header Pragma "no-cache";
add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
access_log off;
}
location /images/ {
expires 5d;
root /var/www/emall/data/www/site.ru;
access_log off;
add_header Cache-Control public;
}
location @fallback {
proxy_pass http://xxx.xxx.xxx.xx:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
location ~ /\.ht {
deny all;
}
}