Пользовательский корневой домен на Heroku

У меня есть domain, example.com, который я хочу использовать для моего rails-приложения, которое находится на example.herokuapp.com, и я довольно смущен, как это сделать.

Героку говорит

"Домены зоны (например," голые "," голые "или" корневые "домены), например, example.com, используя обычные DNS-записи, не поддерживаются Heroku". Затем они продолжают объяснять обходные пути (используя ALIAS или ANAME).

Я потратил хороший час на чтение по этому вопросу (здесь, в SO и в других местах), но до сих пор не обнимаю это.

Есть ли альтернативные способы или объяснения того, как это сделать для "манекена"?

Ответ 1

Я возьму на него удар, поскольку это частый вопрос.

Хорошо, поэтому предположим, что у вас есть домен example.com, и вы хотите использовать www.example.com для размещения своего сайта. В традиционном хостинге вы, вероятно, имеете виртуальный сервер, которому был назначен IP-адрес, в этом случае вы бы использовали запись хоста, иначе известную как запись A в панелях управления DNS, чтобы сопоставить www.example.com с IP-адресом, В этом случае, поскольку теперь вы установили www.example.com на фиксированный IP-адрес, если этот IP-адрес когда-либо изменился, вам нужно будет обновить свой DNS самостоятельно.

Кроме того, при традиционном хостинге вы могли бы установить example.com на один и тот же IP-адрес, чтобы www.example.com и example.com работали в голых доменах.

Хорошо, так что запись CNAME. Запись CNAME, а не сопоставление с IP-адресом, отображает запись в другую запись DNS. Итак, www.example CNAME'd to example.herokuapp.com означает, что Heroku может и может перемещаться туда, где example.herokuapp.com указывает, но вам не нужно ничего обновлять, поскольку вы используете запись CNAME, а Heroku - где указывается example.herokuapp.com(который может и может быть другим CNAME или IP-адресом). Проблема с записями CNAME заключается в том, что они НЕ МОГУТ указывать на IP-адрес, что отлично подходит для www.example.com, но проблема с example.com. Ранее Heroku публиковал IP-адреса для голых доменов, но возникали проблемы, когда они подвергались DDOS-атакам и не могли заменить эти IP-адреса новыми, поскольку они были опубликованы IP-адресами. Для нового региона ЕС Heroku НЕ публикует IP-адреса для использования с обнаженными доменами.

То, что сделали некоторые DNS-провайдеры (DNSsimple, я знаю, это один), добавляет свои собственные записи ALIAS на свои DNS-серверы, чтобы вы могли использовать CNAME с обнаженными доменами, так что как www.example.com, так и example.com будут работать как сейчас поддерживаемый Heroku. Если поставщик DNS не поддерживает записи ALIAS, то стоит переместить домен на поставщика DNS, который его поддерживает. DNSsimple также поддерживает перенаправление записей, поэтому вы можете перенаправить на www.example.com на example.com на уровне провайдера DNS, а не на свой прикладной уровень.

Ответ 2

Найдено: http://blog.cloudflare.com/zone-apex-naked-domain-root-domain-cname-supp

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

Они предоставляют большую ценность без моего опыта с ними до сих пор.

Ответ 3

Если вы посмотрите на спецификацию записей DNS, вы не найдете такой записи, как ANAME.

Лучший способ решить эту проблему: Сделайте запись CNAME для субдомена www в вашем приложении heroku и запись CNAME для корневого домена в субдомен www.

  • www.domain.com. 3600 В CNAME app.herokuapp.com.
  • @3600 В CNAME www.domain.com.

P.S. Он работает и не заставляет вас тратить деньги на мистические записи DNS.