Re: Наследование директив

Maxim Dounin mdounin на mdounin.ru
Вт Авг 15 10:34:37 UTC 2017


Hello!

On Tue, Aug 15, 2017 at 04:19:41AM -0400, igor.goncharenko wrote:

> Вопрос, наверное, был о том - нужно ли переназначать ВСЕ proxy_ директивы на
> данном уровне (как для заголовков) или наследование работает для каждой
> proxy_ директивы отдельно?

Не надо думать, что для заголовков действуют какие-то особые 
правила.  Наоборот, тут действует простое общее правило: значение, 
заданое конкретной директивой, наследуется с предыдущего уровня, 
если на данном уровне эта директива не используется.

Соответственно, если вы использовали на данном уровне директиву 
proxy_set_header - то заданные на предыдущих уровнях заголовки 
наследоваться не будут (а если не использовали - будут).  
Аналогично и для proxy_read_timeout - если она на данном уровне 
используется, то наследования не будет, а если нет - то будет 
наследоваться значения с предыдущего уровня.  И то же самое для 
практически всех директив.

Исключения бывают, но они редки и при этом очевидны.  Скажем, 
директивы allow и deny задают список правил, и указание любой из 
них приводит к отмене наследования всего списка правил.  А 
некоторые директивы не наследуются, как то: try_files, инструкции 
модуля rewrite (rewrite, if, set, break, return), директивы, 
устанавливающие обработчики в конкретном location'е (proxy_pass, 
fastcgi_pass, scgi_pass, uwsgi_pass, memcached_pass, flv, mp4, 
empty_gif, stub_status).  И это наверное всё, если говорить про 
исключния, для всего остального - действует общее правило.

-- 
Maxim Dounin
http://nginx.org/


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