我已经为我的应用程序配置了阶段服务器的 DNS 记录,这样当有人访问时stage.example.com
就www.stage.example.com
可以正常工作。(实际上,如果他访问第一个服务器,Web 服务器会将他重定向到第二个服务器。)
我针对此设置的区域配置文件是:
@ 10800 IN A 1.2.3.4
stage 10800 IN CNAME example.com.
www.stage 10800 IN CNAME example.com.
并且它有效。
现在我想以相同的行为配置我的实时服务器(允许www.example.com
和example.com
),同时保持与阶段子域相关的现有功能,但我无法找出正确的方法 - 或者是否有可能。
我所有的搜索最终都以关于为一级子域进行配置的示例结束,所以我在这里有点迷失。
例如,以下配置是我想要的,但它不起作用
example.com 10800 IN A 5.6.7.8
stage.example.com 10800 IN A 1.2.3.4
www 10800 IN CNAME example.com.
www.stage.example.com 10800 IN CNAME stage.example.com.
欢迎任何想法或建议。
先感谢您。
答案1
我认为您不需要将 .example.com 附加到配置的第二行和最后一行。您的 DNS 服务器已经知道您正在处理 .example.com,因为这是父域。
所以我相信你需要改变:
example.com 10800 IN A 5.6.7.8
stage.example.com 10800 IN A 1.2.3.4
www 10800 IN CNAME example.com.
www.stage.example.com 10800 IN CNAME stage.example.com.
到:
example.com 10800 IN A 5.6.7.8
stage 10800 IN A 1.2.3.4
www 10800 IN CNAME example.com.
www.stage 10800 IN CNAME stage.example.com.
因此,您将拥有一个解析为 5.6.7.8 的 www.example.com 的 CNAME,以及一个解析为 1.2.3.4 的 www.stage.example.com 的 CNAME。
看起来好像您还需要一个域名的@记录,就像您在问题中的第一个代码片段中所显示的那样。
答案2
从...开始Tedwin 的回答以及其中之一第一的搜索结果并结合几个dig
我解决我的主要困惑点:
配置左侧的名称会附加父域 - 除非已经包含。
因此,此配置
live 10800 IN A 5.6.7.8
stage 10800 IN A 1.2.3.4
www 10800 IN CNAME live
www.stage 10800 IN CNAME stage
产生以下挖掘结果:
$ dig www.example.com
;; ANSWER SECTION:
www.example.com. 375 IN CNAME live.example.com.
live.example.com. 375 IN A 5.6.7.8
和
$ dig www.stage.example.com
;; ANSWER SECTION:
www.stage.example.com. 375 IN CNAME stage.example.com.
stage.example.com. 375 IN A 1.2.3.4
因此,为了让它按我想要的方式工作,我所要做的就是替换
live 10800 IN A 5.6.7.8
和
@ 10800 IN A 5.6.7.8