proxy_cache_key и fastcgi_cache_key

Gena Makhomed gmm at csdoc.com
Tue Jan 7 11:13:53 UTC 2014


почитал доку по директивам 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 ?

второй вопрос - по поводу дефолтовых значений
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 будет отдавать
клиентам ошибочные страницы из своего кеша, от совсем другого сайта.

-- 
Best regards,
  Gena



Подробная информация о списке рассылки nginx-ru