Re: proxy_cache_key и fastcgi_cache_key
Maxim Dounin
mdounin at mdounin.ru
Thu Jan 9 14:33:25 UTC 2014
Hello!
On Thu, Jan 09, 2014 at 03:57:19PM +0200, Gena Makhomed wrote:
> On 09.01.2014 14:10, Maxim Dounin wrote:
[...]
> >Смысл значения по умолчанию для proxy_cache_key состоит в том, что
> >идентифицируется тот ресурс, куда осуществялется проксирование.
>
> >Тем самым, если в разных виртуальных серверах проксирование
> >осуществляется в одно и то же место - будет использован один и тот
> >же элемент кеша.
>
> так ведь именно в этом и состоит суть проблемы. в разных виртуальных
> серверах проксирование обычно осуществляется на один и тот же
> backend/upstream, и для *разных* виртуальных серверов будет
> использован один и тот же элемент кеша $scheme$XXX$request_uri.
>
> при proxy_pass http://127.0.0.1:80/ в $proxy_host окажется 127.0.0.1
> аналогично, и в случае fastcgi_cache_key localhost:9000$request_uri;
>
> - запросы к разным virtual host`ам будут попадать в один и тот же
> элемент кеша, и nginx не будет различать *разные* virtual host`ы.
>
> возможно имеет смысл дефолтовые настройки сделать такими,
> чтобы они были безопасными по-умолчанию для всех пользователей?
> т.е. $host вместо $proxy_host ?
В запросах на бекенд по умолчанию в заголовке Host
передаётся именно $proxy_host, и значение proxy_cache_key
соответсвует тому, что происходит по умолчанию. Т.е. по умолчанию -
всё безопасно.
Если же говорить о том, что может быть достугнуто с помощью
худождественного выпиливания по конфигу без понимания
происходящего - то вывод "Мы все умрём" никто не отменял.
[...]
> кстати, аналогичный вопрос касается и дефолтового значнеия proxy_set_header
> - http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header
>
> syntax: proxy_set_header field value;
> default: proxy_set_header Host $proxy_host;
> proxy_set_header Connection close;
>
> хотя ниже идет рекомендация делать proxy_set_header Host $host;
> почему бы не сделать $host значением по-умолчанию?
Ниже говорится о том, что если хочется передать на бекенд значение
Host'а из запроса, то этом можно сделать с помощью $http_host, но
лучше - с помощью $host (и объясняется, почему).
[...]
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru