Re: proxy_cache_key и fastcgi_cache_key

Валентин Бартенев vbart at nginx.com
Fri Jan 10 17:57:21 UTC 2014


On Friday 10 January 2014 19:42:18 Maxim Dounin wrote:
> Hello!
> 
> On Fri, Jan 10, 2014 at 11:54:22AM +0200, Gena Makhomed wrote:
> 
> > On 09.01.2014 16:33, Maxim Dounin wrote:
> > 
> > >>>Смысл значения по умолчанию для proxy_cache_key состоит в том, что
> > >>>идентифицируется тот ресурс, куда осуществялется проксирование.
> > >>
> > >>>Тем самым, если в разных виртуальных серверах проксирование
> > >>>осуществляется в одно и то же место - будет использован
> > >>>один и тот же элемент кеша.
> > 
> > Ситуация, когда все размещенные на одном сервере виртуальные хосты
> > имеют 100% идентичный контент и разные домены практически невозможна.
> > Такая настройка nginx сейчас может появиться только в результате ошибки.
> > 
> > Еще дефолтовая настройка nginx на $proxy_host может быть полезной
> > тем, кто "грабит корованы", то есть показыват на своем сайте контент,
> > который был получен с других сайтов путем проксирования с кешированием.
> 
> Например, это может быть отдельный location под общие элементы 
> и/или ssi-инклуды.  Именно под такие задачи оно исходно и   
> программировалось, и именно потому и стоят такие значения по 
> умолчанию - запрашиваем с бекенда то, что указано в proxy_pass, и 
> кешируем то, что запрашивали.
> 
> Просто следует понимать, что задач - больше одной.  И хорошее 
> решение для одной задачи - может оказаться плохим для другой.
> 
> Проблема, на самом деле, в том, что прописанное в конфиге 
> "proxy_set_header Host $host" существенно меняет суть запроса к 
> бекенду, а значение по умолчанию proxy_cache_key об этом изменении 
> не знает, его надо обучать этому вручную.  Возможно, именно с этой 
> стороны и следует подойти к этому вопросу.
> 
[..]

Лично мне нравится идея привести значение proxy_cache_key по умолчанию
к таковому fastcgi_cache_key, т.е. отсутствует и требуется задавать явно.

ИМХО это полезно, как с точки зрения понятности конфига, так и с точки
зрения унификации между различными upstream-модулями.

А также избавляет нас от странной формулировки в документации:

  "By default, the directive’s value is close to the string"

и упрощает код в нескольких местах.

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

--
Валентин Бартенев


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