【发布时间】:2021-03-22 08:29:15
【问题描述】:
我正在尝试配置我的服务器,以便它终止 EC2 实例上的 https 连接。这一切都在 Elastic Beanstalk 上,我的环境是 Node.js。 从客户端到负载均衡器的连接已经是 https,但我正在采取这种额外措施来满足 HIPAA 要求。
我觉得我跟着instructions on AWS docs 到了 T,但收到“502 Bad Gateway”错误。以下是我采取的步骤。如果您需要更多信息,请告诉我。
-
使用控制台在 Application Load Balancer 上添加了安全侦听器。 (遵循指令here)
-
使用 OpenSSL 制作自签名证书。对于“通用名称”,输入使用 Route 53 注册的限定域(类似于 server.example.com)。 (遵循指令here)
-
将 nginx 配置为侦听端口 443 并通过创建配置文件
.ebextensions/https-instance.config使用证书终止 SSL 连接(遵循指令 here)
---从这里开始,可以找到配置文件的内容here----
-
使用配置文件
.ebextensions/https-reencrypt-alb.config将负载均衡器上的安全监听器配置为转发到实例的443端口 -
使用
.ebextensions/https-lbsecuritygroup.config配置负载均衡器的安全组 -
使用
.ebextensions/https-backendsecurity.config配置EC2实例的安全组
提前感谢您的帮助。
编辑 1:
- 如果我发出 http 请求(即http://server.example.com),服务器会返回有效响应。
- 当前已设置安全组规则,以便负载均衡器和实例都允许所有端口上来自任何地方的所有流量。
- nginx 的error.log 显示
2021/03/19 17:33:43 [error] 12568#0: *159 connect() failed (111: Connection refused) while connecting to upstream, client: 172.XX.XX.XX, server: , request: "GET / HTTP/1.1", upstream: "http://127.X.X.X:8081/", host: "172.XX.X.XXX"的行和行 (X 是我的编辑)
【问题讨论】:
-
您应该能够
ssh进入EC2 服务器并运行curl --insecure https://localhost以验证服务器是否正在运行。--insecure告诉 curl 跳过对您的自签名证书的验证。如果可行,请发布您的安全组配置。如果这不起作用,请查看您的服务器日志以找出 nginx 没有启动的原因。 -
感谢您的步骤。我已经更新了我的原始帖子以包含我发现的内容。
-
实际应用 nginx 代理的请求似乎没有运行。
标签: amazon-web-services amazon-ec2 openssl amazon-elastic-beanstalk aws-application-load-balancer