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 [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
