HTTPS 和 route www.domain.com -> domain.com on AWS elastic beanstalk (适用于 chrome,但不适用于 safari)



我有一个在 AWS 上运行的弹性 beanstalk 实例(没有负载均衡器)。

通过 Route 53,我有一个别名,从我的域名"example.com"和"www.example.com"到 Elastic Beanstalk 实例。 工作得很好。

我还按照此处的教程将每个 http 请求重新路由到 https: https://blog.lucasferreira.org/howto/2017/07/21/set-up-let-s-encrypt-ssl-certificate-with-aws-elastic-beanstalk-single-instance.html

现在奇怪的是,如果在Chrome中转到"www.example.com"或"example.com",一切正常,并且会转发到"https://example.com"。 如果我在 Safari 和 Firefox 中执行相同的操作,则会收到一条错误消息,指出"此连接不是 https://www.example.com 专用的"。 原因是证书用于 domain.com,而不是用于 www.example.com

我是Web服务的新手,真的。我在这里做错了什么?

  • 我是否需要安装两个证书,一个用于 domain.com,一个用于 www.example.com?根据上面的规则,我将如何做到这一点?
  • 我是否可以以其他方式将流量从 www.example.com 重新路由到 example.com,这样我就不需要其他证书?
  • 还是我在 www.example.com 犯了一个基本错误,我不应该同时需要 www 和非 www?

感谢您的帮助。

您可以尝试在 https 重写之前添加第二个重写条件。如果 url 以www.开头,则将 URL 重写为https://example.com,删除www.

这样可以避免将您的 URL 重定向到 https,同时包含 SSL 未涵盖www.

使用您上面链接的教程,您的 VirtualHost 配置将如下所示:

<VirtualHost *:80>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

相关内容

最新更新