Наследование директив конфигурации в Nginx таково, что директивы могут быть унаследованы только из контекста выше дерева конфигурации и никогда от контекста на том же уровне или ниже.
Таким образом, блок местоположения не может наследовать от другого блока местоположения, но вложенный блок местоположения может наследовать от родительского блока местоположения.
Я подчеркнул, что может, потому что существует несколько различных типов директив, и поведение наследования немного отличается для каждого.
Существуют стандартные директивы типа, которые имеют только одно значение или набор значений прилагается. Они просто наследуются контекстами ниже вниз по дереву конфигурации или заменяются в этом нижнем контексте новыми значениями . Примером является «индекс».
Директивы типа массива, которые передают несколько отдельных значений в массиве . Они будут просто наследоваться контекстами ниже в дереве конфигурации или заменяться в этом нижнем контексте новыми значениями. Обратите внимание, что вы не можете добавить в массив. Меняющаяся часть заменяет его все. Примером является «proxy_param». Поэтому, если вы определяете proxy_param A и proxy_param B на уровне сервера, а затем попробуйте определить proxy_param C в контексте местоположения, «A» и «B» будут уничтожены (установлены на значения по умолчанию). поскольку определение «C» означало , заменяющее массив.
Директивы типа команды, такие как «try_files», как правило, не унаследованы от .
Так что конкретно на ваш вопрос директивы, определенные в одном контексте блока местоположения, не могут быть унаследованы другим, как в вашем втором примере.
Директивы типа Standard и Array, определенные в родительском блоке местоположения, будут наследоваться вложенным блоком местоположения. Директивы типа команд, определенные в родительском объекте, не будут наследоваться вообще.
'proxy_pass' также [не наследуется вложенным местоположением] (https://forum.nginx.org/read.php?2,243488,243488). – saaj
'uwsgi_pass' также не наследуется. – Rockallite
Есть ли какая-нибудь проклятая справочная таблица, с которой можно консультироваться, знать, какая директива является или не унаследована? Какая боль должна прийти в SO, затем нажмите ссылку в комментарии, указав на другой форум, прочитав, кто знает, что «proxy_pass не унаследован», –