Посмотрите примеры из документов:
nginx сначала решает, какой сервер должен обработать запрос.Давайте начнем с простой конфигурации, где все три виртуальных сервера прослушивают порт *: 80:
server {
listen 80;
server_name example.org www.example.org;
...
}
server {
listen 80;
server_name example.net www.example.net;
...
}
server {
listen 80;
server_name example.com www.example.com;
...
}
В этой конфигурации nginx проверяет только поле заголовка запроса Host
, чтобы определить, на какой сервер следует направить запроск.Если его значение не совпадает ни с каким именем сервера, или запрос вообще не содержит этого поля заголовка, то nginx направит запрос на сервер по умолчанию для этого порта.В приведенной выше конфигурации сервер по умолчанию - первый - это стандартное поведение nginx по умолчанию.Также можно явно указать, какой сервер должен быть по умолчанию, с помощью параметра default_server в директиве прослушивания:
server {
listen 80 default_server;
server_name example.net www.example.net;
...
}
Теперь имейте в виду, что $host
является конкретно первым server_name
, определенным втекущий блок сервера.если у вас есть несколько server_name
, появится только первое, но если вы хотите, чтобы ваш бэкэнд получил фиксированное имя host
, используйте:
proxy_set_header Host "your.fixed.hostname";