Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: proxy_cache_key и fastcgi_cache_key
Hello!
On Tue, Jan 07, 2014 at 01:13:53PM +0200, Gena Makhomed wrote:
>
> почитал доку по директивам proxy_cache_key и fastcgi_cache_key,
> появилось много вопросов.
>
> для директив proxy_cache_methods и fastcgi_cache_methods
> значение по-умолчанию GET HEAD; - то есть будут кешироваться
> как ответы на GET, так и ответы на HEAD запросы от клиентов.
>
> вместе с тем, в документации во всех примерах использования
> директив proxy_cache_key и fastcgi_cache_key нигде не указано
> зависимости от $request_method, следовательно будет этот глюк:
>
> http://habrahabr.ru/post/72539/
>
> : Особого внимания заслуживает значение в директиве fastcgi_cache_key.
> : Я привел минимальное рабочее значение этой директивы. Шаг вправо,
> : шаг влево, и вы начнете в ряде случаев получать ?неправильные? данные
> : из кэша. Итак:
> : Зависимость от $request_method нам нужна, т.к. HEAD-запросы
> : в Интернете довольно часты. Ответ на HEAD-запрос никогда
> : не содержит тела. Если убрать зависимость от $request_method,
> : то может так совпасть, что кто-то до вас запросил главную страницу
> : HEAD-методом, а вам потом по GET отдастся пустой контент.
>
> может быть имеет смысл поправить все примеры в документации,
> чтобы proxy_cache_key и fastcgi_cache_key включали в себя
> зависимость от $request_method ?
Нет, при использовании кеширования HEAD-запросы передаются на
бекенд с изменением метода на GET.
> второй вопрос - по поводу дефолтовых значений
> proxy_cache_key и fastcgi_cache_key, они почему-то разные.
>
> syntax: fastcgi_cache_key string;
> default: ?
>
> syntax: proxy_cache_key string;
> default: proxy_cache_key $scheme$proxy_host$request_uri;
>
> может быть имеет смысл их сделать одинаковыми,
> и тоже включить в них зависимость от $request_method ?
>
> только наверное вместо $proxy_host лучше использовать переменную $host.
> потому что запросы с разными заголовками Host: могут проксироваться
> на один и тот же backend с одинаковым значением $proxy_host и тогда,
> при *дефолтовом* значении proxy_cache_key - nginx будет отдавать
> клиентам ошибочные страницы из своего кеша, от совсем другого сайта.
Смысл значения по умолчанию для proxy_cache_key состоит в том, что
идентифицируется тот ресурс, куда осуществялется проксирование.
Тем самым, если в разных виртуальных серверах проксирование
осуществляется в одно и то же место - будет использован один и тот
же элемент кеша.
--
Maxim Dounin
http://nginx.org/
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|