Кеширование редиректов - proxy_cache 301
Serge Negodyuck
petr на petrovich.kiev.ua
Пн Сен 6 16:10:27 MSD 2010
Добрый день.
Есть такой nginx
/usr/local/nginx/sbin/nginx -V
nginx version: nginx/0.7.67
built by gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5)
TLS SNI support enabled
configure arguments: --with-http_stub_status_module
--with-http_gzip_static_module --with-http_ssl_module
--with-openssl=/root/openssl-1.0.0a/
и такой конфиг
proxy_cache_path /opt/nginx-cache-img levels=2:2
keys_zone=img1:256m inactive=15d;
upstream img_backend {
server 10.1.1.1:8000;
}
server {
location /img/ {
proxy_hide_header Set-Cookie;
proxy_pass http://img_backend;
proxy_cache img1;
proxy_cache_valid 301 15d;
proxy_cache_valid 200 24h;
proxy_cache_key $host$request_uri;
}
}
Делаем два запроса, получаем в логах
10.0.0.1 - - [06/Sep/2010:14:50:57 +0300] "GET
/img/1008516/2260large.jpg HTTP/1.0" 301 348 "-" "Opera/9.80 (X11;
Linux i686; U; ru) Presto/2.6.30 Version/10.61" 10.1.1.1:8000
10.0.0.1 - - [06/Sep/2010:14:51:09 +0300] "GET
/img/1008516/2260large.jpg HTTP/1.0" 301 348 "-" "Opera/9.80 (X11;
Linux i686; U; ru) Presto/2.6.30 Version/10.61" 10.1.1.1:8000
Последний параметр в логах - $upstream_addr. Т.е. оба раза был запрос
на апстрим.
По логике и по описанию директива
proxy_cache_valid 301 15d;
должна была закешировать 301й редирект на 15 дней, и следующий раз не
лезть лишний раз на бэкенд, чтобы он сгенерировал редирект. Но
почему-то этого не происходит.
Помогите понять почему, и что нужно сделать, чтобы кешировать 301-е ответы?
Подробная информация о списке рассылки nginx-ru