如何使用 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​​ 版本补丁

如何使用 Elastic Beanstalk 提高 SSL 性能

如何使用 CLI 为 Elastic Beanstalk 配置 VPC