Настройка домена в Heroku и GoDaddy без префикса www

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

Я только что купил новый домен в GoDaddy, давайте назовем его example.com. Я хочу подключить этот домен к своему Heroku приложению, поэтому я зашел в настройки в Heroku и в разделе Domains добавил следующие опции для моего домена:

  1. www.example.com
  2. example.com

Затем, в GoDaddy, в управлении DNS я создал две записи CNAME

введите описание изображения здесь

Я использовал DNS-адреса, которые получил от Heroku для каждой из записей.
Запись с подстановочным знаком получила DNS-адрес от example.com, а www получила DNS-адрес от www.example.com.

Теперь я хотел протестировать эту настройку, поэтому попробовал использовать GET запрос в Postman. Я попробовал http://www.example.com и получил ответ 200, который ожидал. Однако,
когда я попробовал http://example.com (без префикса www), я не получил никакого ответа, а вместо этого возникла ошибка:

Ошибка: write EPROTO 140275225778376:error:10000458:SSL routines:OPENSSL_internal:TLSV1_ALERT_UNRECOGNIZED_NAME:../../third_party/boringssl/src/ssl/tls_record.cc:594:SSL alert number 112

Точно ли эта настройка, о которой я упоминаю, корректна? Если я хочу поддерживать оба домена с префиксом www и без него, как правильно это настроить?

Вы не указали DNS-запись для голого домена (также называемого “апекс домена”). Вы можете добавить запись для апекса домена, оставив поле поддомена пустым или введя @ для поддомена. Я не уверен, что будет работать в GoDaddy.

Проблема в том, что вы не можете использовать запись CNAME для апекса домена. Вы можете использовать только записи A там. Heroku требует, чтобы вы указывали на их серверы по имени, а не по IP-адресу, потому что они могут изменить IP-адрес вашего хостинга в любое время без предварительного уведомления. См. Ограничения DNS A-записей | Центр разработки Heroku.

Чтобы указать голый домен на Heroku для хостинга, вам нужно использовать DNS-поставщика, который поддерживает ввод имени в апекс, но обслуживает его как запись A по IP-адресу. Этот тип синтетической записи обычно называется записью ALIAS или ANAME DNS.

К сожалению, GoDaddy не предлагает записи ALIAS или ANAME в своем DNS-хостинге. Вам нужно либо позволить GoDaddy перенаправить голый домен на www, либо найти нового DNS-хоста.

Я бы не рекомендовал позволять GoDaddy перенаправлять ваш голый домен на www. Есть несколько проблем:

Вместо этого вам следует выбрать другой DNS-хост, который предлагает функциональность ANAME/ALIAS и перенести свой DNS-хостинг, изменив NS записи в GoDaddy, чтобы указать на вашего нового DNS-хоста. См. Инструкции GoDaddy по редактированию NS записей

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

Чтобы связать ваш домен, зарегистрированный в GoDaddy, с приложением на Heroku и обеспечить доступ как с префиксом «www», так и без него, необходимо выполнить несколько шагов. Процесс может показаться сложным, но я разложу его по этапам с учётом всех нюансов.

1. Добавление домена в Heroku

Для начала необходимо добавить оба варианта вашего домена в приложение: с префиксом «www» и без него. Перейдите в настройки вашего приложения на платформе Heroku и в разделе «Domains» добавьте:

  • www.example.com
  • example.com

Эти действия зададут желаемые доменные имена для вашего приложения.

2. Настройка DNS в GoDaddy

После добавления домена в Heroku пришло время настроить DNS-записи в GoDaddy. Однако важно понимать, что для доменной зоны (или «апекса») вы не сможете использовать CNAME-запись. Это связано с тем, что стандартные DNS-записи имеют ограничения.

Шаги для настройки DNS:

  1. CNAME для www.: Создайте CNAME-запись для поддомена www, указывающую на DNS-требования Heroku.

    Например:

    • Тип: CNAME
    • Имя: www
    • Указывает на: DNS-цель, предоставленную Heroku (например, yourapp.herokuapp.com).
  2. A запись для апекса: Для главного домена (example.com) вам нужно создать A-запись. Однако GoDaddy не поддерживает ALIAS или ANAME записи, которые могли бы указать на имя хоста. Это значит, что A-запись должна указывать на IP-адрес. Если вы не укажете A-запись, домен без префикса «www» не будет работать.

    Например:

    • Тип: A
    • Имя: @
    • Указывает на: IP-адрес, полученный от Heroku. Однако это не оптимально, поскольку Heroku может поменять свои IP-адреса без предварительного уведомления.

3. Альтернативные решения

Использование стороннего DNS-провайдера

Так как GoDaddy не предоставляет возможности использовать ALIAS или ANAME записи, вам будет выгоднее перейти к другому DNS-хостингу, который предлагает эту функциональность. Популярные провайдеры, такие как Cloudflare или AWS Route 53, поддерживают такие записи.

Шаги по переходу:
  1. Выберите новый DNS-хост: Например, Cloudflare, который предлагает услуги на уровне DNS и имеет поддержку SSL.

  2. Измените NS-записи в GoDaddy: Перейдите в настройки вашего домена в GoDaddy и измените NS-записи, чтобы они указывали на новый DNS-провайдер. Следуйте инструкциям, предоставленным вашим новым провайдером.

  3. Настройка ALIAS или ANAME: Создайте ALIAS или ANAME запись для домена example.com, указывая на ваше приложение на Heroku, и оставьте CNAME для www.example.com.

4. Проверка настройки

После внесения всех изменений вам необходимо проверить корректность работы обеих версий домена. Для этого повторите запросы с помощью Postman или просто попробуйте открыть оба адреса (http://example.com и http://www.example.com) в браузере.

Заключение

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

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

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