Jas*_*ard 0 python django amazon-ec2 amazon-web-services
我在运行 python 项目的 EC2 实例上很难解析 HTTPS。请求只是超时(ERR_CONNECTION_TIMED_OUT)。但是,HTTP 运行正常。我采取的步骤如下。
A 记录的路由策略很简单。
注意:“转发到”是在端口 80 (HTTP) 上运行的目标组。我读到这是正确的。
在这一点上,我有以下问题:
a) 鉴于这是一个 python/Django 项目,是否可以通过 aws 网站为 EC2 启用 HTTPS,或者我是否需要添加配置文件并部署到我的实例?
b) 我需要创建一个在 HTTPS 上运行的目标组吗?
c) 我的负载平衡需要监听端口 80 和端口 443 还是仅端口 443?
d) 在我的安全组中,我是否需要端口 80 才能访问 0.0.0.0/0 和 ::0/?
e) A 记录应该是负载均衡器的 DNS 名称还是我的环境的 CNAME?
谢谢你的帮助!一旦我们在这里得到答案,我将编写一个指南并将其发布在 youtube 上。
让我首先向您简要介绍一下在这种情况下请求是如何流动的。
正如您猜对的那样,负载均衡器,具体来说是应用程序负载均衡器可以处理 SSL 流量。这也意味着从负载均衡器到源服务器,在这种情况下提到的目标组,只有 http 流量将流动,而不是 https。所以您不必担心在服务器上处理证书。然后,来自源服务器的响应再次封装在 SSL 隧道中,并由 ALB 发送回客户端。
这意味着您的最终用户至少应该能够连接到负载均衡器端口 443 以及端口 80(可以重定向到 443)。
这意味着您的负载均衡器的安全组应该向全世界或您的用户开放端口 443(以及可选的 80)。
在源服务器和 ALB 之间,流量在您的应用程序运行的端口中流动,这是服务器的安全组应该允许访问 ALB 的端口。
换句话说,服务器 (EC2) 安全组应允许在应用程序运行的任何端口上使用 ALB。
注意:这不一定是 80 或 443,它也可以是 8080,只要您的目标组知道它并在该端口上转发请求。
现在回答您的问题:
a) 鉴于这是一个 python/Django 项目,是否可以通过 aws 网站为 EC2 启用 HTTPS,或者我是否需要添加配置文件并部署到我的实例?
你不必这样做。正如我提到的,加密/解密可以卸载到 ALB。在这里阅读更多关于它的文档。
b) 我需要创建一个在 HTTPS 上运行的目标组吗?
这是建立在上一个问题的基础上的,不,您不必这样做。应用服务器/EC2 实例不应该关心这个。
c) 我的负载平衡需要监听端口 80 和端口 443 还是仅端口 443?
这取决于您的用例。基本的必要是只有 443。如果您想允许用户仍然登陆 http 站点,然后被重定向到更安全的 https 版本,您可以再次使用 ALB。更多关于它在这里。
d) 在我的安全组中,我是否需要端口 80 才能访问 0.0.0.0/0 和 ::0/?
对于 ALB,是的,但不适用于 EC2 实例。请记住,Ec2 从不直接与用户通信,仅与 ALB 通信。因此,您可以更严格地控制 EC2 上的流量。
e) A 记录应该是负载均衡器的 DNS 名称还是我的环境的 CNAME?
使用别名记录。它们更易于管理,AWS 将负责映射。更多关于这里。
归档时间: |
|
查看次数: |
391 次 |
最近记录: |