运行反向代理的 Elastic Beanstalk 上的 TLS

Posted

技术标签:

【中文标题】运行反向代理的 Elastic Beanstalk 上的 TLS【英文标题】:TLS on Elastic Beanstalk running reverse proxy 【发布时间】:2019-02-11 16:28:07 【问题描述】:

我想将 TLS 添加到我的 AWS Elastic Beanstalk 应用程序。它是一个运行在 nginx 代理服务器后面的 node.js 应用程序。

这是我已经完成的步骤

    从 Amazon Certificate Manager 获取通配符证书。 在我的 EB 实例的负载均衡器配置部分添加证书。

我的 nginx 配置的相关部分是

files:
  /etc/nginx/conf.d/proxy.conf:
  mode: "000644"
  content: |
    upstream nodejs 
      server 127.0.0.1:8081;
      keepalive 256;
    

    server 
      listen 8080;

      proxy_set_header X-Forwarded-Proto $scheme;
      if ( $http_x_forwarded_proto != 'https' ) 
        return 301 https://$host$request_uri;
      

      location / 
        proxy_pass  http://nodejs;
        proxy_http_version 1.1;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      
    

当我尝试使用 https 访问我的应用程序时,我收到了 408: Request Timed Out

据我了解,要在 nginx 上启用 ssl,我们需要将证书与 pem 文件一起添加并侦听端口 443。但由于我使用的是 ACM 证书,因此我没有证书和 pem 文件。

我在我的 nginx.conf 中缺少什么以使其正常工作?

谢谢

【问题讨论】:

您不需要在 Nginx 上安装 SSL 证书,因为负载均衡器正在执行 SSL 终止。您应该检查的第一件事是端口 443 在分配给负载均衡器的安全组中是打开的。 @MarkB 分配给负载的安全组有一个入站规则监听 443。 【参考方案1】:

在负载均衡监听器配置中,对于端口443监听器,“Instance Port”设置应为80

【讨论】:

以上是关于运行反向代理的 Elastic Beanstalk 上的 TLS的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS Elastic Beanstalk 上运行 celery worker?

text 在Elastic Beanstalk上安装telegraf代理

如何让Elastic Beanstalk nginx支持的代理服务器从HTTP自动重定向到HTTPS?

Python3 + Nginx:将 HTTP 流量重定向到 AWS Elastic Beanstalk 上的 HTTPS

从 Elastic Beanstalk 到 wordpress 的代理

使用 Elastic Beanstalk 配置 httpd 服务超时