Проблема с DNS на страницах сервера NGINX, загрузка не происходит ERR_NAME_NOT_RESOLVED

Вопрос или проблема

Хорошо, у меня есть 5 страниц:

  • login.html
  • otp.html
  • billing.html
  • index.html (для целей отладки)
  • page-not-found.html

Предполагаемая логика

  • Введите в браузер:

sub.domain.com/path (например, sub.domain.com/login)

  • Служит с:

https://sub.domain.com/path.html (например, https://sub.domain.com/login.html)


Все это работало, и теперь, по какой-то причине, это меня сбивает с толка – всё возвращает ERR_NAME_NOT_RESOLVED – это любая комбинация, которую я протестировал, т.е. /login /login.html /

Я трижды проверил записи DNS для домена (sub.domain.com), все они указывают на IP веб-сервера.

Примечание: Навигация по IP-адресу сервера загружает страницу!? Проблема с DNS? Я только что выполнил ipconfig /flushdns – то же самое.. сброс кеша браузера – то же самое

Записи DNS для домена выглядят следующим образом (если это имеет отношение):
Таблица записей DNS от хостинга домена6

Файл NGINX (/etc/nginx/sites-enabled/website.conf)

server {
server_name sub.domain.com;
root /var/www/html/sub-domain;
index login.html;      # добавлено просто, чтобы увидеть, загрузится ли - не загрузилось
                       # ранее было /login.html
                       # изменено для тестирования
location / {
    try_files $uri $uri.html page-not-found; # ранее было /page-not-found - изменено для тестирования
}

location /page-not-found {
    try_files $uri.html =404;
}

error_page 404 /custom_404.html;
location = /custom_404.html {
    root /usr/share/nginx.html;
    internal;
    }

listen [::]:443 ssl ipv6only=on; # управляется Certbot
listen 443 ssl; # управляется Certbot
ssl_certificate /etc/letsencrypt/live/sub.domain.com/fullchain.pem; # управляется Certbot
ssl_certificate_key /etc/letsencrypt/live/sub.domain.com/privkey.pem; # управляется Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # управляется Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # управляется Certbot
}

server {
   if ($host = sub.domain.com) {
       return 301 https://$host$request_uri;
} # управляется Certbot


listen 80;
listen [::]:80;
server_name sub.domain.com;
return 404; # управляется Certbot
}

Ответ или решение

Проблемы с DNS и ERR_NAME_NOT_RESOLVED на сервере NGINX

Обзор проблемы

Ваши страницы, расположенные по адресу sub.domain.com, перестали загружаться, и браузер выдает ошибку ERR_NAME_NOT_RESOLVED. При этом, прямой доступ к серверу по IP-адресу работает, что указывает на проблему с DNS. Вы упомянули, что проверили DNS-записи и сделали очистку кэша DNS на локальном компьютере, однако проблема сохраняется.

Шаги диагностики проблемы

  1. Проверка DNS-записей:
    Убедитесь, что A-запись для sub.domain.com действительно указывает на IP-адрес вашего сервера. Используйте утилиты командной строки, такие как dig или nslookup, чтобы подтвердить, что запись корректно разрешается:

    dig sub.domain.com

    или

    nslookup sub.domain.com
  2. Время обновления DNS:
    Проверьте TTL (Time To Live) ваших DNS-записей. Если TTL высок (например, 24 часа), изменения могут занять некоторое время для распространения. Если вы не видите последние изменения, возможно, стоит подождать или использовать другой DNS-сервер.

  3. Проверка конфигурации NGINX:
    Просмотрите вашу конфигурацию NGINX, чтобы убедиться, что все расставлено корректно. В вашем файле конфигурации есть несколько моментов, которые стоит уточнить:

    • Запись server_name sub.domain.com; кажется корректной, но стоит добавить и точное совпадение с www.sub.domain.com, если планируете использовать его.
    • Проверьте правильность указания путей в root и try_files. Например, если ваш файл login.html находится в корне /var/www/html/sub-domain, тогда структура должна быть:
      location / {
       try_files $uri $uri.html /page-not-found.html;
      }
    • Убедитесь, что файл /var/www/html/sub-domain/page-not-found.html существует, чтобы избежать ошибки 404.
  4. SSL-сертификаты:
    Если тут всё настроено корректно, то при использовании HTTPS ваши сертификаты (Let’s Encrypt) должны быть актуальны. Проверьте их срок действия с помощью командной строки:

    sudo certbot certificates
  5. Проверка локального кэша DNS:
    Если вы уже попробовали ipconfig /flushdns, то стоит еще проверить настройки локального файрвола или DNS-серверов, которые вы используете в своих сетевых настройках. Использование публичных DNS (например, Google DNS 8.8.8.8 и 8.8.4.4) может помочь временно.

  6. Проверка состояния NGINX:
    Убедитесь, что ваш сервер NGINX работает без ошибок. Выполните команды:

    sudo systemctl status nginx
    sudo nginx -t

    Первой полученная команда покажет, работает ли NGINX, а вторая проверит синтаксические ошибки в конфигурации.

Потенциальные решения

  • Если DNS-записи корректные, но ошибка продолжается, попробуйте изменить DNS-серверы на вашем устройстве.
  • Проверьте файл hosts на своем локальном компьютере, чтобы убедиться, что там нет некорректных записей.
  • Попробуйте перезапустить маршрутизатор, так как иногда это может сбрасывать кэш DNS.

Заключение

Ошибки типа ERR_NAME_NOT_RESOLVED часто возникают из-за неправильных настроек DNS или кэширования. Следуя описанным шагам, вы сможете диагностировать и, надеемся, исправить проблему. Убедитесь также, что все изменения в конфигурациях применены, а NGINX перезапущен после каждого изменения. Если проблема не разрешается, стоит обратиться к администратору DNS или вашему провайдеру хостинга.

Оцените материал
Добавить комментарий

Капча загружается...