Re: проблема с кэшированием
Alex Smorodin
agsmorodin на gmail.com
Ср Июн 9 15:42:48 MSD 2010
Пробую так (на 0.7.66 и на 0.8.4):
location / {
proxy_pass http://192.168.0.32:81;
proxy_set_header Host domain.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_next_upstream error timeout invalid_header http_500 http_503;
proxy_cache one;
proxy_no_cache $cookie_session;
proxy_cache_key
"$request_method|$is_args|$host|$request_uri|$cookie_session";
proxy_hide_header Set-Cookie;
proxy_pass_header Set-Cookie;
proxy_ignore_headers "Cache-Control" "Expires";
proxy_cache_valid 200 301 302 304 1h;
}
location ~ (^/(page1|page2)) {
proxy_pass http://192.168.0.32:81;
proxy_set_header Host domain.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_next_upstream error timeout invalid_header http_500 http_503;
proxy_cache off;
}
Если указывать только proxy_hide_headers Set-Cookie - session в браузер не
передается, попадает только в кэш (соответственно залогиниться нельзя). Если
после указать proxy_path_header Set-Cookie - куку браузер получает, но она
все равно попадает в кэш и она же отдаться в другом сеансе. Как правильно
поставить эти параметры, чтобы переменная не попадала в кэш, но проходила от
бекэнда до браузера. Спасибо.
при логине кука session не передается . но зато страница кэшируется с
параметром "Set-Cookie: SESSION=c6070942bd95129dff2f34271169a226
я так понимаю если стоит no_cache $cookie_session то страница в любом случае
не должна попасть в кэш.
Спасибо.
7 июня 2010 г. 16:01 пользователь Igor Sysoev <igor на sysoev.ru> написал:
> On Mon, Jun 07, 2010 at 03:06:54PM +0300, Alex Smorodin wrote:
>
> > Добрый день. ubuntu с ядром 2.6.27-11-generic,nginx version: nginx/
> 0.7.65.
> > Хочу настроить кэширование в nginx. На апач пропускаю все post
> запросы,
> > так же проверяю куку session, она устанавливаетcя, когда пользователь
> > логинится, соответственно эти страницы мы не кэшруем. Проблема в
> следующем:
> > в кэш иногда попадают внутренние страницы сайта, если не устанавливать
> > параметр "proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;".
> > Если его добавить, все работает нормально. Непонятно, как он может
> влиять?
> > Для проверки добавил в ключ proxy_cache_key куку session, так вот кука
> > попадает в кэш (хотя явно прописано условие не кэшировать страницу).
> > Вот конфиг:
> > server {
> > listen 192.168.0.32:9081;
> > server_name domain.com;
> > access_log /var/log/nginx/domain.com/nginx-access.log combined;
> > error_log /var/log/nginx/domain.com/nginx-error.log error;
> > proxy_temp_path /var/cache/nginx/domain.com;
> > location @nocached {
> > proxy_pass http://192.168.0.32:81;<
> http://192.168.0.32:81/;>
> > proxy_set_header Host domain.com;
> > proxy_set_header X-Real-IP $remote_addr;
> > proxy_set_header X-Forwarded-For
> $proxy_add_x_forwarded_for;
> > }
> > location / {
> > proxy_pass http://192.168.0.32:81;<
> http://192.168.0.32:81/;>
> > proxy_set_header Host domain.com;
> > proxy_set_header X-Real-IP $remote_addr;
> > proxy_set_header X-Forwarded-For
> $proxy_add_x_forwarded_for;
> > proxy_next_upstream error timeout invalid_header http_500
> > http_503;
> > if ($cookie_session) {
> > return 412;
> > }
> > if ($request_method = POST ) {
> > return 412;
> > }
> > error_page 412 = @nocached;
> > proxy_cache one;
> > proxy_cache_key
> > "$request_method|$is_args|$host|$request_uri|$cookie_session";
> > proxy_hide_header "Set-Cookie";
> > proxy_ignore_headers "Cache-Control" "Expires";
> > proxy_cache_valid 200 301 302 304 1h;
> > }
> > }
>
> Возьмите 0.8.40 и используйте такую конфигурацию:
>
> server {
> listen 192.168.0.32:9081;
> server_name domain.com;
> access_log /var/log/nginx/domain.com/nginx-access.log combined;
> error_log /var/log/nginx/domain.com/nginx-error.log error;
> proxy_temp_path /var/cache/nginx/domain.com;
>
> location / {
> proxy_pass http://192.168.0.32:81;
> proxy_set_header Host domain.com;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_next_upstream error timeout invalid_header http_500
> http_503;
> proxy_cache one;
> proxy_no_cache $cookie_session;
> proxy_cache_key domain.com$uri?$args;
> proxy_hide_header "Set-Cookie";
> proxy_ignore_headers "Cache-Control" "Expires";
> proxy_cache_valid 200 301 302 304 1h;
> }
> }
>
>
> --
> Игорь Сысоев
> http://sysoev.ru
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru на nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
>
--
С уважением,
Смородин Александр
mailto: agsmorodin на gmail.com
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20100609/9f105082/attachment-0001.html>
Подробная информация о списке рассылки nginx-ru