January 18, 2013 03:50AM
День добрый.

Задача: отдавать ответ из кеша для всех запросов без определенной куки
(sessionid), т.е. чтобы неавторизованные пользователи не стучались к апачу
(точнее стучались реже, раз в 10 минут).

Использую следующий конфиг:

log_format cache "Code: $status Session: $cookie_sessionid Cache:
$upstream_cache_status Response time: $upstream_response_time Uri: $uri";
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache:10m
max_size=1000m;

server {
include includes/listen.conf;
server_name domain;
client_max_body_size 100m;
location / {
access_log /var/log/nginx/domain.ru.access.log cache;
error_log /var/log/nginx/domain.ru.error.log debug;
proxy_ignore_headers Expires Cache-Control;
proxy_cache_bypass $cookie_sessionid;
proxy_no_cache $cookie_sessionid;
proxy_cache cache;
proxy_cache_lock on;
proxy_cache_use_stale error timeout invalid_header updating http_500
http_502 http_503 http_504;
proxy_cache_valid 200 10m;
proxy_cache_methods GET HEAD;
proxy_pass http://127.0.0.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
}

Далее посылаю шесть запросов, три без куки sessionid, три с кукой, в логе
вижу следующее:

root@test:/etc/nginx/sites-enabled# tail -f
/var/log/nginx/domain.ru.access.log
Code: 200 Session: - Cache: MISS Response time: 0.007 Uri: /
Code: 200 Session: - Cache: MISS Response time: 0.007 Uri: /
Code: 200 Session: - Cache: MISS Response time: 0.006 Uri: /
Code: 200 Session: f889bfe0e2577b848418f512fd7e8df5 Cache: BYPASS Response
time: 0.008 Uri: /
Code: 200 Session: f889bfe0e2577b848418f512fd7e8df5 Cache: BYPASS Response
time: 0.009 Uri: /
Code: 200 Session: f889bfe0e2577b848418f512fd7e8df5 Cache: BYPASS Response
time: 0.010 Uri: /

все шесть запросов ушли к апачу, хотя я ожидал, что из первых трех уйдет
только первый (чтобы сформировать содержимое кеша), а последующие два к
апачу уходить не будут.

подскажите пожалуйста, что я делаю не так и как мне решить мою задачу?

спасибо.

p.s.

root@test:/etc/nginx/sites-enabled# nginx -V
nginx version: nginx/1.2.1
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log
--http-proxy-temp-path=/var/lib/nginx/proxy
--http-scgi-temp-path=/var/lib/nginx/scgi
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi
--lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid
--with-pcre-jit --with-debug --with-http_addition_module
--with-http_dav_module --with-http_geoip_module
--with-http_gzip_static_module --with-http_image_filter_module
--with-http_realip_module --with-http_stub_status_module
--with-http_ssl_module --with-http_sub_module --with-http_xslt_module
--with-ipv6 --with-sha1=/usr/include/openssl
--with-md5=/usr/include/openssl --with-mail --with-mail_ssl_module
--add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-auth-pam
--add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-echo
--add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-upstream-fair
--add-module=/tmp/buildd/nginx-1.2.1/debian/modules/nginx-dav-ext-module

p.s. в логе переменная $cookie_sessionid в случае отсутствия куки sesionid
почему-то помещает не пустую строку, а символ "-", я сначала подумал что
дело в это (согласно документации директив proxy_cache_bypass
и proxy_no_cache для того чтобы ответ взялся из кеша указанная переменная
должна содержать пустую строку (или 0), поэтому я добавил map {} блок,
который превращал "-" в ""), но это ничего не изменило, поэтому я
предполагаю что проблема в чем-то ином.


--
С уважением, Шарипов Руслан.
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Кеширование ответов для не авторизованных пользователей

Serafim January 18, 2013 03:50AM

Re: Кеширование ответов для не авторизованных пользователей

Andrey Kopeyko January 18, 2013 07:04AM

умолчание: "proxy_cache_lock off;" и "proxy_cache_use_stale off;"

Gena Makhomed January 18, 2013 08:10AM

Re: умолчание: "proxy_cache_lock off;" и "proxy_cache_use_stale off;"

Михаил Монашёв January 18, 2013 10:56AM

Re: умолчание: "proxy_cache_lock off;" и "proxy_cache_use_stale off;"

Gena Makhomed January 18, 2013 01:08PM

Re[2]: умолчание: "proxy_cache_lock off;" и "proxy_cache_use_stale off;"

Михаил Монашёв January 18, 2013 01:34PM

Re[2]: умолчание: "proxy_cache_lock off;" и "proxy_cache_use_stale off;"

Михаил Монашёв January 18, 2013 03:10PM

оптимизатор конфига для nginx

Gena Makhomed January 18, 2013 04:26PM

Re: оптимизатор конфига для nginx

Михаил Монашёв January 19, 2013 03:48AM

Re: оптимизатор конфига для nginx

Gena Makhomed January 19, 2013 01:28PM

Re: умолчание: "proxy_cache_lock off;" и "proxy_cache_use_stale off;"

Валентин Бартенев January 18, 2013 01:44PM

Re: умолчание: "proxy_cache_lock off;" и "proxy_cache_use_stale off;"

Gena Makhomed January 18, 2013 02:12PM

Re: умолчание: "proxy_cache_lock off;" и "proxy_cache_use_stale off;"

Валентин Бартенев January 18, 2013 02:38PM

Re: Кеширование ответов для не авторизованных пользователей

Serafim January 21, 2013 05:28AM

Re: Кеширование ответов для не авторизованных пользователей

Валентин Бартенев January 21, 2013 05:48AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 329
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready