如何使用 Elastic Beanstalk 将常规域条目路由到安全端口 443
Posted
技术标签:
【中文标题】如何使用 Elastic Beanstalk 将常规域条目路由到安全端口 443【英文标题】:How to route regular domain entry to secure port 443 using Elastic Beanstalk 【发布时间】:2021-02-04 14:52:06 【问题描述】:我有一个 php 网站(从现在起将称为 awesomedomain.com。)目前在 Elastic Beanstalk 中进行负载平衡,并且 SSL 已启动并正在运行。
我可以使用https://awesomedomain.com/ 获得与该站点的安全连接,但是每当我输入“awesomedomain.com”时,它仍然作为不安全端口连接。
我有两个听众 80 和 443 设置。如何将所有传入流量路由到端口 443 以进行全球 SSL 连接?
在此先感谢任何人。
干杯,
~生物
【问题讨论】:
【参考方案1】:当您只键入“awesomedomain.com”时,浏览器会自动添加“http://”,然后尝试访问该服务器的端口80
。您的应用程序必须将请求从端口 80 发送到端口 443 以强制浏览器使用 SSL。如果您使用的是应用程序负载均衡器 (ALB) 或 CloudFront,则可以在那里配置重定向。否则,您的服务器需要从负载均衡器中检测 X-Forwarded-Proto
标头的值,如果不是 443
,则发出重定向。
在 Elastic Beanstalk 中执行此操作的方法记录在 here。
【讨论】:
【参考方案2】:你可以设置两种方式:
-
设置规则是主机文件:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName abc.example.com
Redirect permanent / https://abc.example.com/
</VirtualHost>
<VirtualHost _default_:443>
ServerName abc.example.com
DocumentRoot /var/www/html/example
SSLEngine On
</VirtualHost>
更改后不要忘记重启服务器。
-
在
.htaccess
文件中:
RewriteEngine On
RewriteCond %HTTPS off
RewriteRule ^ https://%HTTP_HOST%REQUEST_URI
-
如果您使用 CloudFront 和 ELB 作为 ssl 证书的端点,则 CloudFront 可以选择将 http 重定向到 https 所有请求。
【讨论】:
这可能会中断负载均衡器的运行状况检查,而无需进一步配置以防止在运行状况检查 URL 处重定向。它也不会在终止 SSL 的负载平衡器后面工作,因为服务器将始终将请求视为 HTTP,并且需要检查原始协议的标头。 你是对的。有不同的实现最好的选择。以上是关于如何使用 Elastic Beanstalk 将常规域条目路由到安全端口 443的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Terraform 为 Elastic Beanstalk 环境定义条件(每个环境)设置?
如何使用 Elastic Beanstalk 设置实例类型?
如何在 AWS elastic-beanstalk 中更改我的 python 版本
如何在 elastic-beanstalk 中应用 ruby 版本补丁