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