![使用 Elastic Beanstalk 的 CNAME 和 A 记录将非 www 重定向到 www 时遇到很多困难](https://linux22.com/image/680359/%E4%BD%BF%E7%94%A8%20Elastic%20Beanstalk%20%E7%9A%84%20CNAME%20%E5%92%8C%20A%20%E8%AE%B0%E5%BD%95%E5%B0%86%E9%9D%9E%20www%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20www%20%E6%97%B6%E9%81%87%E5%88%B0%E5%BE%88%E5%A4%9A%E5%9B%B0%E9%9A%BE.png)
我的网站使用 Elastic Beanstalk(作为 VirtualHost):http://apptic.us-east-1.elasticbeanstalk.com/apptic/
我在 Namecheap 也有我的域名:apptic.me
我已经为 Elastic Load Balancer 安装了 SSL 证书,理想情况下我想使用 HTTPS。但是我真正担心的是,对于非 www 的 HTTPS,网站不会重定向https://apptic.me到https://www.apptic.me-- 它根本无法显示任何内容。
我很确定我的 DNS 设置有问题,而不是我的 Elastic Beanstalk 配置有问题,但我愿意听取建议。该网站正确重定向http://apptic.me,然后运行http://www.apptic.me无需重定向到 https(这并不是我担心的问题)。
我当前的 DNS 设置如下:
CNAME Record: www => apptic.us-east-1.elasticbeanstalk.com.
URL Redirect Record: @ => https://www.apptic.me/
如何更改 DNS 设置,以便所有 HTTP/HTTPS 和非 www/www 的排列都转到https://www.apptic.me?我甚至会觉得http://apptic.me去了http://www.apptic.me和https://apptic.me去了https://www.apptic.me。
答案1
处理此问题的正确方法不是使用 DNS 记录。您应该使用 Route 53 并将您的域设置为 AWS 提供的自定义名称服务器。以下是我遵循的教程:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customdomains.html
我最后还写了一篇关于此问题的博客文章:https://www.apptic.me/blog/using-custom-domains-with-elastic-beanstalk.php
答案2
这不是 DNS 问题,因为CNAME
根据 DNS 标准,apex 别名是不合法的。
“URL 重定向记录”功能是 Namecheap 软件实现的自定义行为。在后台,它会为A
将为您执行重定向的 Web 服务器定义一条记录。
有问题的 Web 服务器没有监听端口 443 (https),因此重定向失败。
$ dig +short apptic.me
162.255.119.250
$ nc -zv 162.255.119.250 443
nc: connect to 162.255.119.250 port 443 (tcp) failed: Connection refused
这几乎肯定是由于 https 的限制,大多数浏览器都希望 SSL 证书在发送主机头之前显示网站的名称。Namecheap 在这里无能为力,除非他们愿意为您的重定向提供一个 IP 地址并将您提供的 SSL 证书与其关联。另一种选择是他们使用会生成安全警告的伪造 SSL 证书,而不是处理这个问题,他们似乎选择根本不监听端口 443。
简而言之,这是重定向 Web 服务器的限制,该限制不太可能得到修复,并且没有 DNS 快捷方式可以解决这个问题. 无缝 https 重定向将要求具有有效签名 SSL 证书的专用 https 网络服务器。获得证书后,将您的 apexA
记录设置为其 IP 地址。