Я пытаюсь понять, как разрешить DNS для имен веб-сайтов по именованным IP-адресам. Веб-сайты зарегистрированы в reg123, но сайты размещены на другом сервере. Куда вводить эти данные в Nginx? Где в моих файлах конфигурации Nginx мне указать правильный DNS, который свяжет веб-сайт с правильным IP-адресом? Я следил за этой инструкцией, и, похоже, это указывает на то, что ваш сервер настроен следующим образом:
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Однако IP-адрес моего сайта выглядит примерно так: 192.889.167.423
Просто отвечая на HTTP-запросы, Nginx вообще не должен знать о DNS:
listen address[:port]
связывает server{}
на указанный IP-адрес и порт. (Хотя address
также может быть именем хоста, оно преобразовано в IP-адрес, потому что имя хоста на самом деле не существует ни на транспортном, ни на сетевом уровне.)server_name
, имена настроек виртуального сервера, используется для выбора правильного server{}
среди всех server{}
блоки с соответствием listen
. Он использует HTTP Host
заголовок, то есть браузер предоставляет эту информацию (независимо от DNS).С HTTP Host
(RFC 7230, 5.4) не требуется иметь отдельные IP-адреса для всех ваших доменов, а указание имени сервера (SNI, RFC 6066, 3) включает то же самое для HTTPS.
С listen *:80; server_name example.com;
ваш Nginx ответит на запросы example.com
на каждом IP-адресе, который у него есть, но на самом деле этого не произойдет: а) поскольку DNS указывает на другой IP-адрес, ни б) не имеет значения, поскольку это не делает ваш сервер уязвимым для чего-либо.