Рейтинг:0

Наследование директивы вложенного местоположения nginx, когда применяется, а когда нет

флаг cn

Я знаю, что мне нужно дублировать proxy_pass в обоих местах ниже, нужно ли также дублировать proxy_set_headers?

место расположения / {
  proxy_pass http://mywebfeservers;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-клиент-SSL ДА;
  proxy_set_header X-Forwarded-For $remote_addr;
  proxy_set_header X-Forwarded-Host $host;
  proxy_set_header X-Forwarded-Port 443;
  proxy_set_header X-Forwarded-Scheme https;

  местоположение / ааа {
    proxy_pass http://mywebfeservers;
    client_max_body_size 30M;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-клиент-SSL ДА;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Port 443;
    proxy_set_header X-Forwarded-Scheme https;
  }
}
Ivan Shatsky avatar
флаг gr
Разве это не совершенно ясно задокументировано в самом начале директивы `proxy_set_header` [описание](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header)? _Эти директивы наследуются от предыдущего уровня конфигурации тогда и только тогда, когда на текущем уровне не определены директивы `proxy_set_header`._
флаг cn
@ИванШацкий Да
Рейтинг:0
флаг cn

Немного перефразировано из комментария Ивана Шацкого к вопросу.

Это абсолютно четко задокументировано в самом начале директивы proxy_set_header описание.

Эти директивы унаследованы от предыдущего уровня конфигурации. тогда и только тогда, когда директивы proxy_set_header не определены на текущий уровень.

Рейтинг:0
флаг cg

Теоретически, если удалить /ааа и уходи / у вас должен быть такой же эффект.

Если вам нужно использовать одну и ту же конфигурацию прокси в разных локации вы можете добавить конфигурацию прокси в файл.

Пример:

  1. Создайте файл proxy.conf и добавьте эти строки

Добавлять

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-клиент-SSL ДА;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Forwarded-Scheme https;
  1. Измените свою конфигурацию
    место расположения / {
        proxy_pass http://mywebfeservers;
        включить <ваш путь>/proxy.conf
    }
    
    местоположение / ааа {
       proxy_pass http://mywebfeservers;
       включить <ваш путь>/proxy.conf
    }
  1. Перезагрузите вашу конфигурацию

Основная цель — создать модульную конфигурацию (несколько файлов), которая позволит вам изменить один файл, чтобы изменить несколько точек вашей конфигурации.

флаг cn
Я немного отредактировал свой вопрос, чтобы добавить, почему я хотел иметь вложенное местоположение (вложенное местоположение добавляется в client_max_body_size). Как указал Иван в комментарии к вопросу документации, proxy_set_header в моей ситуации дублировать не нужно, что избавляет от необходимости в proxy.conf.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.