Elastic Beanstalk 强制 https

aww*_*ter 13 amazon-web-services elastic-beanstalk

我在通过 AWS Elastic Beanstalk 部署的站点强制使用 HTTPS 时遇到问题。

这是一个使用 EmberJS 的前端应用程序。我已经绕圈子转了很多天,试图弄清楚如何将 http 流量重定向到 https。我在我的 EC2 机器上使用 Amazon Linux AMI。

我得出的结论是(仍然不确定这是否正确)我强制使用 HTTPS 不在 Elastic Beanstalk 中。我允许 HTTP 和 HTTPS 通过我的 Elastic Beanstalk 负载均衡器,并尝试在服务器上重定向。

这是我遇到问题的地方。我找到了很多关于重写规则的答案,没有mod_rewrite这些答案基于X-Forwarded-Proto标题,但是根据查找搜索,该文件在我的 EC2 机器上不存在。

我也试过在.ebextensions目录中创建一个配置文件,但这也不起作用。

我尝试做的主要事情是在尝试访问 http 地址时将用户定向到 https。非常感谢任何指针或建议,谢谢!

编辑:我正在使用运行 Python 3.4(预配置 - Docker)的 64 位 Debian jessie v1.4.1

小智 11

通过使用X-Forwarded-ProtoELB 设置的标头,还可以更轻松地做到这一点,而无需接触负载平衡器。这是我最终做的:

files:
  "/etc/nginx/sites-available/elasticbeanstalk-nginx-docker-proxy.conf":
    mode: "00644"
    owner: root
    group: root
    content: |
      map $http_upgrade $connection_upgrade {
        default        "upgrade";
        ""            "";
      }

      server {
        listen 80;

        gzip on;
        gzip_comp_level 4;
        gzip_types text/html text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        access_log    /var/log/nginx/access.log;

        location / {
          proxy_pass            http://docker;
          proxy_http_version    1.1;

          proxy_set_header      Connection      $connection_upgrade;
          proxy_set_header      Upgrade         $http_upgrade;
          proxy_set_header      Host            $host;
          proxy_set_header      X-Real-IP       $remote_addr;
          proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        if ($http_x_forwarded_proto = 'http') {
          return 301 https://$host$request_uri;
        }
      }
Run Code Online (Sandbox Code Playgroud)


小智 8

我认为您需要指定您使用的 Elastic Beanstalk 环境(请参阅:支持的平台),因为不同的环境有不同的配置。

基本上,您需要自定义:

  • 弹性负载均衡器
    • 侦听端口 80 并将其代理到 EC2 实例端口 80。
    • 侦听端口 443 并将其代理到 EC2 实例端口 443。
  • EC2 Web 服务器/代理
    • 侦听端口 80 并响应重定向到 HTTPS。
    • 侦听端口 443 并为请求提供服务。

要自定义它,您可以使用 CLI 或.ebextensions.

您可以检查在AWS Elastic Beanstalk启用 HTTPS 和 HTTP 重定向。它告诉您如何配置 Elastic Beanstalk Single Docker Container 服务 HTTPS 和 HTTP(重定向到 HTTPS)。您可以根据需要调整配置。