Re: proxy_cache_key и fastcgi_cache_key

Gena Makhomed gmm at csdoc.com
Fri Jan 10 20:33:24 UTC 2014


On 10.01.2014 19:57, Валентин Бартенев wrote:

>>>>>> Смысл значения по умолчанию для proxy_cache_key состоит в том, что
>>>>>> идентифицируется тот ресурс, куда осуществялется проксирование.
>>>>>
>>>>>> Тем самым, если в разных виртуальных серверах проксирование
>>>>>> осуществляется в одно и то же место - будет использован
>>>>>> один и тот же элемент кеша.
>>>
>>> Ситуация, когда все размещенные на одном сервере виртуальные хосты
>>> имеют 100% идентичный контент и разные домены практически невозможна.
>>> Такая настройка nginx сейчас может появиться только в результате ошибки.
>>>
>>> Еще дефолтовая настройка nginx на $proxy_host может быть полезной
>>> тем, кто "грабит корованы", то есть показыват на своем сайте контент,
>>> который был получен с других сайтов путем проксирования с кешированием.
>>
>> Например, это может быть отдельный location под общие элементы
>> и/или ssi-инклуды.  Именно под такие задачи оно исходно и
>> программировалось, и именно потому и стоят такие значения по
>> умолчанию - запрашиваем с бекенда то, что указано в proxy_pass, и
>> кешируем то, что запрашивали.
>>
>> Просто следует понимать, что задач - больше одной.  И хорошее
>> решение для одной задачи - может оказаться плохим для другой.

Да, теперь понятно, спасибо. Но всеравно, дефолтовое значение
директивы proxy_cache_key очень странное, такой ключ применим
возможно в 0.0001% конфигураций nginx в мире, а тут - default

>> Проблема, на самом деле, в том, что прописанное в конфиге
>> "proxy_set_header Host $host" существенно меняет суть запроса к
>> бекенду, а значение по умолчанию proxy_cache_key об этом изменении
>> не знает, его надо обучать этому вручную.  Возможно, именно с этой
>> стороны и следует подойти к этому вопросу.

Да, очень странное значение proxy_cache_key по умолчанию
и не менее странный пример настройки fastcgi_cache_key,
который приведен в документации. Были ведь такие случаи,
и подозреваю, что неоднократно, когда люди копируют себе
в конфиг fastcgi_cache_key, а потом они в шоке от того,
что происходит с их сайтами и рейтингами в поисковиках.

> Лично мне нравится идея привести значение proxy_cache_key по умолчанию
> к таковому fastcgi_cache_key, т.е. отсутствует и требуется задавать явно.
>
> ИМХО это полезно, как с точки зрения понятности конфига, так и с точки
> зрения унификации между различными upstream-модулями.
>
> А также избавляет нас от странной формулировки в документации:
>
>    "By default, the directive’s value is close to the string"
>
> и упрощает код в нескольких местах.

Мне тоже нравится, только пожалуйста актуализируйте документацию
на сайте по этим директивам proxy_cache_key и fastcgi_cache_key,
чтобы внимательно прочитав ее, можно было понять что туда писать.

> Понятно, что такое изменение нарушает совместимость конфигурации и
> потребует явного вмешательства при обновлении.  Но если что-то менять
> в этом отношении, то я за такой вариант.

Разве много ли таких конфигураций, которые полагались
на дефолтовое значение директивы proxy_cache_key ?

По крайней мере, можно добавить deprecation warning,
если proxy_cache_key явно не задан, а через некоторое
время - менять дефолт, и это почти никого не затронет.

-- 
Best regards,
  Gena



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