不久前,我在我的注册商 (Namecheap) 注册了域名 www.testapp.id。我希望它指向的应用程序是 Heroku 上托管的 Rails 应用程序。我按照 Heroku 网站上的说明进行操作这里, 具体来说:
您可以通过运行 Heroku CLI 命令来检查自定义域的正确 CNAME 目标:heroku domains -a your_app_name。
- 在 herokudns.com 可用之前创建的自定义域将显示 your_app_name.herokuapp.com 作为 DNS CNAME 目标。自定义
- 最近创建的域将显示 your_custom_domain.herokudns.com 作为 DNS CNAME 目标。
您应该根据这些设置设置 DNS CNAME 目标,尽管使用 your_app_name.herokuapp.com 适用于旧自定义域和新自定义域。如果 .herokudns.com 可用于自定义域,那么您应该使用它,因为它将使将来更容易过渡到 Heroku SSL。
我目前在 Namecheap 上仅设置了以下 URL 重定向记录和 CNAME 记录:
在 Heroku 端,当我运行 时heroku domains
,我看到以下输出:
[ hello-world ] $ heroku domains
=== hidden-beach-71618 Heroku Domain
hidden-beach-71618.herokuapp.com
=== hidden-beach-71618 Custom Domains
Domain Name DNS Record Type DNS Target
─────────── ─────────────── ──────────────────────────────────────────────────────────
testapp.id ALIAS or ANAME concentric-wildfowl-rsf834gfj5eft9k4mqvpvjkp.herokudns.com
在浏览器中导航到hidden-beach
URL 可以成功显示应用程序,但导航到 则http://www.testapp.id
不行。我等了大约 30 分钟才重试,我希望这段时间足以让结果传播。
在我的 CLI 中执行dig www.testapp.id
结果如下:
[ hello-world ] $ dig www.testapp.id
; <<>> DiG 9.10.6 <<>> www.testapp.id
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57445
;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 13, ADDITIONAL: 17
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.testapp.id. IN A
;; ANSWER SECTION:
www.testapp.id. 1703 IN CNAME concentric-wildfowl-rsf834gfj5eft9k4mqvpvjkp.herokudns.com.
concentric-wildfowl-rsf834gfj5eft9k4mqvpvjkp.herokudns.com. 59 IN A 52.207.111.186
concentric-wildfowl-rsf834gfj5eft9k4mqvpvjkp.herokudns.com. 59 IN A 52.22.236.254
concentric-wildfowl-rsf834gfj5eft9k4mqvpvjkp.herokudns.com. 59 IN A 34.199.255.1
concentric-wildfowl-rsf834gfj5eft9k4mqvpvjkp.herokudns.com. 59 IN A 52.45.248.161
concentric-wildfowl-rsf834gfj5eft9k4mqvpvjkp.herokudns.com. 59 IN A 34.226.180.131
concentric-wildfowl-rsf834gfj5eft9k4mqvpvjkp.herokudns.com. 59 IN A 54.236.200.27
concentric-wildfowl-rsf834gfj5eft9k4mqvpvjkp.herokudns.com. 59 IN A 34.206.9.96
concentric-wildfowl-rsf834gfj5eft9k4mqvpvjkp.herokudns.com. 59 IN A 52.203.66.95
;; AUTHORITY SECTION:
com. 155416 IN NS k.gtld-servers.net.
com. 155416 IN NS g.gtld-servers.net.
com. 155416 IN NS c.gtld-servers.net.
com. 155416 IN NS f.gtld-servers.net.
com. 155416 IN NS b.gtld-servers.net.
com. 155416 IN NS h.gtld-servers.net.
com. 155416 IN NS i.gtld-servers.net.
com. 155416 IN NS a.gtld-servers.net.
com. 155416 IN NS l.gtld-servers.net.
com. 155416 IN NS j.gtld-servers.net.
com. 155416 IN NS d.gtld-servers.net.
com. 155416 IN NS e.gtld-servers.net.
com. 155416 IN NS m.gtld-servers.net.
;; ADDITIONAL SECTION:
a.gtld-servers.net. 5594 IN A 192.5.6.30
b.gtld-servers.net. 8284 IN A 192.33.14.30
b.gtld-servers.net. 6036 IN AAAA 2001:503:231d::2:30
c.gtld-servers.net. 155416 IN AAAA 2001:503:83eb::30
d.gtld-servers.net. 155416 IN AAAA 2001:500:856e::30
e.gtld-servers.net. 15649 IN A 192.12.94.30
e.gtld-servers.net. 15509 IN AAAA 2001:502:1ca1::30
f.gtld-servers.net. 14627 IN A 192.35.51.30
f.gtld-servers.net. 11150 IN AAAA 2001:503:d414::30
g.gtld-servers.net. 147526 IN A 192.42.93.30
h.gtld-servers.net. 6533 IN A 192.54.112.30
i.gtld-servers.net. 155416 IN AAAA 2001:503:39c1::30
j.gtld-servers.net. 147526 IN A 192.48.79.30
k.gtld-servers.net. 155416 IN A 192.52.178.30
l.gtld-servers.net. 147526 IN AAAA 2001:500:d937::30
m.gtld-servers.net. 9832 IN AAAA 2001:501:b1f9::30
;; Query time: 57 msec
;; SERVER: 10.100.8.11#53(10.100.8.11)
;; WHEN: Wed May 08 16:40:51 PDT 2019
;; MSG SIZE rcvd: 819
我在答案部分看到我的 URL 解析为 Heroku 的 DNS URL,根据 Heroku 的指示,这正是我所期望的。
另外,当我跟踪服务器日志(heroku logs -t
来自我的本地项目存储库)时,我会看到日志,但是刷新浏览器时看不到任何活动,所以我知道服务器没有收到请求。
除了使用给我的 herokudns.com 域名创建 CNAME 记录之外,我还尝试创建 NS 记录并(未成功)创建 A 记录(尽管我知道 A 记录仅接受 IP)。
我的问题是——我忽略了什么?我没能创建正确类型的记录,还是有其他我不知道的事情?