Назад | Перейти на главную страницу

Различные поля для proxy_set_header в конфигурации nginx

Я очень новичок в конфигурации nginx. Я хочу использовать его для установки виртуальных хостов, чтобы я мог запускать разные приложения Node JS на разных портах на одном сервере, но обслуживать их на разных поддоменах. После некоторого поиска я нашел сообщение о stackoverflow, и оно хорошо работает для того, что я хочу делать. Помимо прочего, в коде использовался следующий блок местоположения

location / {                                                              │
    proxy_set_header X-Real-IP $remote_addr;                              │
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;          │
    proxy_set_header Host $http_host;                                     │
    proxy_set_header X-NginX-Proxy true;                                  │
                                                                          │
    proxy_pass http://otherapp/;                                          │
    proxy_redirect off;                                                   │
}

Теперь я хотел понять, что делает сценарий. Я просмотрел документы и заметки nginx, опубликованные разными людьми, и кое-что понял. Мне кажется, что то, что я хочу, вероятно, сработает, даже если я удалю все proxy_set_header строки в приведенном выше коде ИСКЛЮЧАЯ proxy_pass. Я хочу узнать, что делают разные поля в приведенном выше коде. Возможно, они полезны для некоторых вещей, о которых я пока не понимаю. Есть ли место, где перечислены все поля для proxy_set_header модуль и объясняет их?

Спасибо.

По сути, он предоставляет информацию серверу, к которому он проксируется. Для того, чтобы:

  1. X-Real-IP - сервер, на который вы проксируете, будет видеть систему прокси nginx как «IP-адрес клиента» в любой логике приложения или журналах, которые он выполняет, поскольку служба nginx является источником TCP-соединения. Обычно это бесполезно, особенно в журналах. Внутренний сервер может использовать этот заголовок вместо своего обычного IP-адреса клиента для ведения журнала или других целей, когда ему нужен IP-адрес клиента.
  2. X-Forwarded-For - это стандартный заголовок, похожий на X-Real-IP, но предоставляет добавленные записи источника подключения для всей цепочки прокси, через которые прошло соединение. Анализировать и работать с внутренним сервером может быть немного сложнее, так как возможно несколько записей.
  3. Host - Это наиболее важно для вашего приложения. Обычно запрос, который nginx делает к внутреннему серверу, будет содержать Host заголовок адрес, который вы настроили (в данном случае http://otherapp/). Это, вероятно, нежелательно при проксировании на что-то, выполняющее виртуальный хостинг на основе имени, или что-то, что генерирует ссылки на основе полученного заголовка хоста. Эта конфигурация делает так, чтобы Host заголовок, который клиент отправил nginx, отправляется на бэкэнд (эквивалентно Apache ProxyPreserveHost).
  4. X-NginX-Proxy - Все это действует как маркер использования прокси. Наверное, в большинстве случаев бесполезен.