【问题标题】:Route 53 record set not resolving for Elastic Beanstalk instanceRoute 53 记录集无法解析 Elastic Beanstalk 实例
【发布时间】:2020-05-12 17:47:33
【问题描述】:

我正在尝试将特定子域路由到 Elastic Beanstalk 应用程序环境实例的 url。该域内的其他路由工作正常。

Route 53 记录集的配置屏幕如下所示:

我可以使用 environment.url.elasticbeanstalk.com 访问环境,但我不能使用 subdomain.domain.com

您对可能出现的问题有任何线索吗?也许与 Elastic Beanstalk 负载均衡器或安全组有关?

我找到了this AWS troubleshooting page。看来我正确地遵循了他们的配置。

【问题讨论】:

  • 使用dnschecker.org检查传播
  • 感谢@saitejapakalapati,我检查了该工具,它似乎是用于检查不同位置的 DNS 解析。这不是我的问题,子域在任何位置都不起作用。我是否缺少有关该工具的某些内容?

标签: amazon-web-services amazon-elastic-beanstalk amazon-route53


【解决方案1】:

好的,不知道发生了什么,但我尝试通过将A-IPv4 address 更改为CNAME 再次配置Record Set,但没有成功。

然后我改回A-IPv4 address 并尝试再次将Alias target 输入Elastic Beanstalk 环境。当我从列表中选择我想要的环境environment.url.elasticbeanstalk.com 并保存更改时,它就可以工作了。

我不知道这是否是一个错误,但我不记得更改过这个值。此外,我可以从字段中复制值并在浏览器中毫无问题地对其进行测试。无论如何,我希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您应该设置 CNAME 记录而不是 A 记录。在名称字段中输入您的子域,在值字段中输入 Elastic Beanstalk URL。您应该使用 A 或别名记录仅指向根域:domain.com

    【讨论】:

    • 感谢您的 cmets。我尝试使用 CNAME 而不是 A 没有运气。其他 AWS 配置是否会导致此问题?
    • CNAME 有效,但别名设置为“否”,因为它是直接传递。注意 AWS 也会对 CNAME 重定向收费。此处使用 CNAME 的主要限制 -> stackoverflow.com/a/20230670/5180047.
    【解决方案3】:

    这里有一些可以尝试的方法。我与 AWS 支持代表进行了交谈,他得到了非常有用的反馈。这是他不得不说的:

    1. 来自 AWS 支持人员 - quoting this issue

    虽然其中一些值根本不正确,但大多数值是 URL,而不是 DNS 名称,因为它包含“http://”。这通常是由于在测试对 beanstalk 应用程序的访问后从浏览器地址栏中复制名称而发生的。尽管您可以在 Route53 中进行设置,但您将无法连接到它。您可能已经看到类似于“我们无法连接到 test.example.com 上的服务器”的错误。当您使用其 DNS 名称连接到 Web 应用程序时,首先会发生 DNS 解析。以域名“test.example.com”为例。将被解析为“http://test-env.eba-xxxxxx.us-east-1.elasticbeanstalk.com/”,然后此值将缓存在您的 DNS 缓存中。如果您随后使用正确的值更新 DNS 记录,然后尝试再次解析相同的名称“test.example.com”,它将从缓存中获取值,而不是从托管区域中的名称服务器中获取新值。即使您现在已使用正确的值更新了记录,您也会继续在浏览器中看到错误。此值在 TTL(生存时间)1 中设置的持续时间内保留在缓存中。一旦 TTL 过期,您的 DNS 解析器将再次查询托管区域中的名称服务器并获取正确的值。查看 ChangeResourceRecordSets API 调用,我可以看到更改非常接近。 CNAME 的默认 TTL 为 300 秒,我可以确认这是您遇到的问题的一个非常相似的原因。因此建议在测试 DNS 记录时设置较低的 TTL。此外,您还可以清除 DNS 缓存或从不同的网络进行测试。在 Windows 机器上,您可以使用命令“ipconfig /flushdns”清除 DNS 缓存。

    1. (根据我的个人经验)如果您的网络服务器还没有 HTTPS,并且您使用的域之前曾使用过 HTTPS(对我来说,我使用的是我常用的域用于测试),那么浏览器可能会自动将您的请求升级到 HTTPS,就像我的那样,这并不能立即清除(尤其是协议文本经常在浏览器的地址栏中被剥离),如果您的应用程序只是在 80 上提供服务,然后您向 443 发出请求。清除浏览器数据以确保它不记得旧的使用情况并自动升级您的请求或完全关闭升级以确保请求是通过 HTTP 发出的。

    我相当肯定我同时遇到了这两个问题,这导致这个问题令人头疼。有点相关 - 我的用例将我的 Route53 域与弹性 beanstalk 环境放在一个单独的帐户上。

    希望对你有帮助

    【讨论】:

      【解决方案4】:

      就我而言,我使用的是 .DEV 域always requires HTTPS connections 和我的 Elastic Beanstalk 应用程序仅在端口 80 上提供服务。我通过让我的应用程序也在端口443 上服务来修复它。

      【讨论】:

        猜你喜欢
        • 2018-07-05
        • 2021-01-01
        • 2020-10-24
        • 2019-10-25
        • 2021-11-29
        • 2017-12-25
        • 2017-08-30
        • 2014-12-23
        • 2013-10-21
        相关资源
        最近更新 更多