Я очень новичок в конфигурации 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
модуль и объясняет их?
Спасибо.
По сути, он предоставляет информацию серверу, к которому он проксируется. Для того, чтобы:
X-Real-IP
- сервер, на который вы проксируете, будет видеть систему прокси nginx как «IP-адрес клиента» в любой логике приложения или журналах, которые он выполняет, поскольку служба nginx является источником TCP-соединения. Обычно это бесполезно, особенно в журналах. Внутренний сервер может использовать этот заголовок вместо своего обычного IP-адреса клиента для ведения журнала или других целей, когда ему нужен IP-адрес клиента.X-Forwarded-For
- это стандартный заголовок, похожий на X-Real-IP
, но предоставляет добавленные записи источника подключения для всей цепочки прокси, через которые прошло соединение. Анализировать и работать с внутренним сервером может быть немного сложнее, так как возможно несколько записей.Host
- Это наиболее важно для вашего приложения. Обычно запрос, который nginx делает к внутреннему серверу, будет содержать Host
заголовок адрес, который вы настроили (в данном случае http://otherapp/
). Это, вероятно, нежелательно при проксировании на что-то, выполняющее виртуальный хостинг на основе имени, или что-то, что генерирует ссылки на основе полученного заголовка хоста. Эта конфигурация делает так, чтобы Host
заголовок, который клиент отправил nginx, отправляется на бэкэнд (эквивалентно Apache ProxyPreserveHost
).X-NginX-Proxy
- Все это действует как маркер использования прокси. Наверное, в большинстве случаев бесполезен.