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

Разрешение DNS на сервере Nginx Ubuntu

Я пытаюсь понять, как разрешить 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:

  1. Директива listen address[:port] связывает server{} на указанный IP-адрес и порт. (Хотя address также может быть именем хоста, оно преобразовано в IP-адрес, потому что имя хоста на самом деле не существует ни на транспортном, ни на сетевом уровне.)
  2. В 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-адрес, ни б) не имеет значения, поскольку это не делает ваш сервер уязвимым для чего-либо.