从 SSL 上的裸域重定向失败

Posted

技术标签:

【中文标题】从 SSL 上的裸域重定向失败【英文标题】:Failed redirect from naked domain on SSL 【发布时间】:2018-01-21 19:15:50 【问题描述】:

我最近在我的 AWS 托管 wordpress 网站上安装了 SSL,但我的命名域不再工作。

https://example.com、https://www.example.com、www.example.com 都按预期工作。

example.com 不工作。 example.com 引发连接被拒绝错误。

设置:

Wordpress 托管在从 bitnami AMI 安装的单个 AWS EC2 上。 EC2 位于经典负载均衡器后面。 SSL 证书在 AWS 证书管理器上进行管理,并颁发给 *.example.com、example.com 和 www.example.com DNS 使用路由 53:www.doamin.com 和 domain.com 有指向同一个负载均衡器别名的 A 记录 .htacces 已用 RewriteRule 修改 ^(.*)$ https://example.com/$1 [R,L]

我该怎么做才能让它工作?

【问题讨论】:

您确定example.com 工作正常吗...尝试使用其他浏览器和telnet www.example.com 80。您看到的确切错误消息是什么以及在哪里? 你的权利,两个非安全都不起作用。C:\>telnet www.example.com 80 Connecting To www.example.com...无法打开与主机的连接,在端口80:连接失败。 我的重写规则是: RewriteEngine On RewriteCond %SERVER_PORT 443 RewriteRule ^(.*)$ your-domain/$1 [R,L] 【参考方案1】:

HTTPS 确实有效,所以问题不在于 DNS。您提到了负载均衡器。 Connection Refused 错误表示您的请求没有发送到负载均衡器或被负载均衡器接受。

检查负载平衡器的安全组并确保允许port 80 inbound

检查您的负载平衡器是否有listener on port 80

如果您在负载均衡器的公共子网上修改了 NACL(网络访问控制列表),则需要允许 80 inbound and everything outbound。默认的 NACL 规则已经允许这样做。

顺便说一句,我注意到您正在终止负载平衡器上的 SSL(因为您使用的是 ACM 证书)。根据您的配置,这可能意味着您在端口 80 上将请求转发到未加密的 Web 服务器。如果是这样,那么您的重写规则将无法正确检测 HTTPS 的使用。 AWS has some documentation 更详细地解释了这一点。

【讨论】:

您的权利。这是一个听众问题。将 HTTP 端口 80 添加到负载平衡器侦听器修复它。

以上是关于从 SSL 上的裸域重定向失败的主要内容,如果未能解决你的问题,请参考以下文章

cloudfront 和 s3 301 重定向显示存储桶的裸域

使用 htaccess 将所有流量重定向到裸域 SSL

Cloudfront 使用 ssl 将 www 重定向到裸域 [关闭]

使用ssl将Cloudfront重定向到裸域[关闭]

Heroku/GoDaddy:将裸域发送到 www [关闭]

复杂的重定向:HTTP 到 HTTPS + localhost 上的端口和裸域到 www,除了 localhost