将子域名设置为不同的服务器

将子域名设置为不同的服务器

我正在 Google Domains 上设置子域名,格式如下子域名.mydomain.com,以便此 URL 将用户引导到我的服务器(AWS EC2 实例)。在Google 域名我可以使用已注册主机或合成记录配置子域。但当我这样做并指定我的服务器的 IP 地址(或外部 URL)时,它只会将浏览器重定向到该 IP 地址(或外部 URL),并且用户会在浏览器的地址栏中看到它,而不是子域名.mydomain.com

如何在Google 域名,这样流量就会被路由到一个不同的服务器,并且服务器的 IP 是不可见的(根本不是外部通信的一部分)?

感谢任何帮助。

答案1

您需要将子域名设置为资源记录:https://support.google.com/domains/answer/3290350

注册主机(“粘合记录”)主要用于名称服务器。合成记录主要用于第三方集成。

进行更改后,您可能还会遇到子域名指向的站点重定向到 IP 地址的问题。您可以使用 curl 等工具来验证:curl -I -X GET http://subdomain.domain/

如果 curl 的输出显示 301 或 302 之类的内容,则表明网站本身也在重定向,您需要查看原因。浏览器可能还会缓存任何重定向,因此您可能需要清除缓存并重新启动浏览器。

答案2

感谢@rob-olmos 指出正确的资源记录。分享完整的解决方案,这可能会对其他人有所帮助。

我最终在 AWS Route 53 中创建了一个托管区域和 2 个记录集:1) 一个类型为 的记录集NS和 2) 一个类型为 的记录集A。1) 前者为 生成了 4 个名称服务器subdomain.mydomain.com,示例如下:

ns-2048.awsdns-64.com  
ns-2049.awsdns-65.net  
ns-2050.awsdns-66.org  
ns-2051.awsdns-67.co.uk

这里有关 Rout 53 NS 的更多详细信息。
2)后者的记录集subdomain.mydomain.com与 EC2 实例的实际 IP 进行映射。

doc 描述了如何将流量路由到 EC2,但它仅涵盖第二个记录集(添加类型 A 映射)并且缺少 NS 记录。

下一步是添加类型为国家标准(类型 A 对我来说不起作用,因为它会暴露 IP 地址)子域名在您的注册商(我的情况是 google domains)中。国家标准资源记录类型对于路由流量而不暴露服务器的 IP 地址至关重要。因此,我在 Google Domains 中访问Custom resource records并添加了在 Route 53 中生成的 4 个 ns 名称服务器。

就是这样,效果非常好。

相关内容