AWS Elastic Beanstalk 应用程序初始访问不安全,但后续重定向是

Posted

技术标签:

【中文标题】AWS Elastic Beanstalk 应用程序初始访问不安全,但后续重定向是【英文标题】:AWS Elastic Beanstalk app initial access is not secure, but subsequent redirect is 【发布时间】:2020-05-18 02:51:19 【问题描述】:

我正在使用 Elastic Beanstalk(带有负载均衡器)来支持 Wordpress 站点。我已通过证书管理器 (ACM) 设置 SSL,并启用负载均衡器在端口 443 上侦听 HTTPS。 我还尝试通过将以下行添加到我的源包中的wp_config.php 来强制在我的 Wordpress 网站上使用 HTTPS(正如许多帖子所建议的那样):

define('WP_HOME','https://example.com');
define('WP_SITEURL','https://example.com');
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
       $_SERVER['HTTPS']='on';

但是,我的问题是当我尝试访问我的站点时,初始访问不安全,即 HTTP 连接,但是当我尝试导航到其他页面并返回我的站点时,连接立即变为安全的HTTPS 连接。我想知道我能做些什么来解决这个问题,以便在初次访问该站点时强制使用 HTTPS。 我之前也遇到过“重定向太多”错误,因为试图强制使用 HTTPS,而 Wordpress 让这样做有点棘手,所以我试图避免这种情况。任何帮助深表感谢。谢谢!

【问题讨论】:

在负载均衡器上设置重定向;让端口 80 上的侦听器重定向到 443。 @hephalump 对于80端口的监听器,实例协议应该是什么,还是应该是HTTP? 是的。在控制台中,下拉菜单将为您提供重定向而不是转发的选项。 @hephalump 我不确定我是否做对了。所以对于我在 beanstalk 上的 LB 配置,我有 2 个监听器: 1. HTTP 80 -> HTTP 80 2. HTTPS 443 -> HTTP 80 SSL: xxxxxxxxx 那么我应该做些什么改变呢? 【参考方案1】:

您可以将弹性 beanstalk 扩展添加到您的环境中。通常,您会在应用程序的根目录中包含一个 .ebextensions 文件夹,以包含您的每个扩展。 (docs)

如果您正在运行 nginx 作为代理服务器(我假设您是),请将名为 10-nginx.config 的文件添加到扩展目录。

files:
  "/etc/nginx/sites-available/elasticbeanstalk-nginx-docker-proxy.conf":
    content: |
      server 
          listen 80 default_server;

          server_name _;

          return 301 https://$host$request_uri;
      

但是,您还应该考虑在负载平衡器上终止 HTTPS 并让应用程序在环境网络中的端口 80 上运行。

这方面的文档在这里; https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-httpredirect.html

【讨论】:

以上是关于AWS Elastic Beanstalk 应用程序初始访问不安全,但后续重定向是的主要内容,如果未能解决你的问题,请参考以下文章

当我将 Spring Boot 应用程序部署到 AWS Elastic Beanstalk 并且无法从本地 Spring Boot 连接到 RDS 时出现 502 错误网关

Amazon Elastic BeanStalk 错误:无法创建 AWS Elastic Beanstalk 应用程序版本

AWS Elastic Beanstalk

带有 docker 应用程序的 AWS Elastic Beanstalk 返回 502

使用 AWS Elastic Beanstalk 在 AWS 上部署 Spring Boot 应用程序

AWS Lambda 与 Elastic Beanstalk