nginx: Есть ли способ избежать указания IP-адреса сервера в файле конфигурации nginx? - PullRequest
0 голосов
/ 08 мая 2020

Я использовал nginx в качестве обратного прокси в простом приложении express. В моем файле конфигурации я использовал IP-адрес сервера (http://45.33.97.232/) как имя_сервера.

, но есть ли способ избежать записи фактического IP-адреса сервера в этот файл, ничего не сломав?

server {
    listen 80 default_server;
    server_name 45.33.97.232;

location / {
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://45.33.97.232:3000; #port where you are serving your express app.

  }
}

1 Ответ

2 голосов
/ 08 мая 2020

Да. Установив флаг default_server в директиве listen и задав для имени сервера любое недопустимое доменное имя. Обычно имя _ используется в конфигурационных файлах nginx, но это может быть любое недопустимое имя домена, например ! et c:

server {
    listen 80 default_server;
    server_name _;

    ...
}

См. http://nginx.org/en/docs/http/server_names.html#miscellaneous_names для получения дополнительной информации об этом.


Обратите внимание, что есть одно специальное имя сервера, которое имеет дополнительное значение. Если вам нужно обслуживать клиентов, которые не отправляют заголовок Host (например, клиенты HTTP / 1.0), тогда пустая строка используется для обозначения того, что этот серверный блок является тем, который предназначен для обслуживания таких клиентов. Таким образом, server_name может быть установлен в две двойные кавычки ("") для обозначения пустой строки:

server {
    listen 80;
    server_name "";

    ...
}

Обратите внимание, что это не работает как универсальное доменное имя, как _ выше. Вместо этого он перехватывает запросы с пустым заголовком хоста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...