Re: nginx 0.8.53, проблема с кэшем
Oleksandr V. Typlyns'kyi
wangsamp на gmail.com
Вт Дек 28 16:25:50 MSK 2010
Today Dec 28, 2010 at 14:09 Alex Khrenov wrote:
> Конфиг был в первом письме вроде.
> Повторяю:
> location / {
> if ($cookie_dle_user_id) { return 412; }
> if ($cookie_dle_password) { return 412; }
> if ($request_method = POST ) { return 412; }
Если специально не указывать POST в proxy_cache_methods, то он и так не будет закэширован.
А эти cookie нужно просто перечислить в proxy_cache_bypass и proxy_no_cache:
http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_cache_bypass
http://sysoev.ru/nginx/docs/http/ngx_http_proxy_module.html#proxy_no_cache
> error_page 412 = @nocached;
> include /usr/local/etc/nginx/conf/cache;
> proxy_pass http://127.2.0.1:2190/;
Уберите "/" в конце.
> /usr/local/etc/nginx/conf/cache:
> proxy_cache one;
> proxy_cache_key "$request_method|$is_args|$host|$request_uri";
Если не кэшировать POST-ты, то $request_method не нужен - при HEAD nginx отправит к backend-у запрос GET, закэширует ответ с телом, но отдаст только заголовки.
$is_args вообще ничего полезного тут не делает.
Ключ, который Вы хотите, скорее всего должен выглядеть так: proxy_cache_key "$host|$uri$is_args$args";
> proxy_hide_header "Set-Cookie";
> proxy_ignore_headers "Cache-Control" "Expires";
http://sysoev.ru/nginx/changes.html
0.8.44 05.07.2010
Изменение: теперь nginx по умолчанию не кэширует ответы бэкендов, в заголовке которых есть строка "Set-Cookie".
Нужно изменить так: proxy_ignore_headers Set-Cookie Cache-Control Expires;
--
WNGS-RIPE
Подробная информация о списке рассылки nginx-ru