Background
我正在使用Heroku的评论应用程序功能。它为每个打开的 github 拉取请求部署一个新的应用程序实例,并为其分配格式的唯一 URL
my-app-pr-1234.myapp.herokuapp.com
我的应用程序大量使用子域,而 Heroku 不支持这些子域(请参阅此处的答案(。
他们要求我购买并设置 DNS 记录来处理子域,所以我购买了example.com
问题
每个拉取请求都会生成自己唯一的 URL。而且我不想为每个记录设置新的 DNS 记录,我宁愿设置一个通用 DNS 记录。
如何设置 DNS,以便它"解析"传入请求的子域并将其定向到正确的应用程序?
例:
- 我访问
foo.pr-1738.example.com
- 我希望 DNS 解析出请求的子域并指向
my-app-pr-1738.myapp.herokuapp.com
(子域foo
将由应用程序本身处理(
这可能吗?
旁注:我使用 DNSimple 进行 DNS 记录管理,尽管这个问题通常适用于 DNS。
如何设置 DNS,以便它"解析"传入请求的子域并将其定向到正确的应用程序?
你不能,不能简单地使用 DNS 协议,除非所有主机名都由同一个后端服务器处理(你不能真正假设,因为 Heroku 可能会路由设置为不同 IP 的不同子域(。
如果每个应用程序都附加了一个自定义主机名,并且它们都遵循唯一的架构,例如<pr-1738>.example.com
,则可以创建通配符
*.example.com
这指向主要的 Heroku 主机名。同样,这并不能保证始终有效,因为 Heroku 可能会处理来自不同 IP 的应用程序 A.example.com 和 B.example.com。但在大多数情况下它可能有效。
否则,真正正确的方法是在创建应用时预配适当的 DNS 记录。