Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行python项目的EC2实例上的HTTPS_Python_Django_Amazon Web Services_Amazon Ec2 - Fatal编程技术网

运行python项目的EC2实例上的HTTPS

运行python项目的EC2实例上的HTTPS,python,django,amazon-web-services,amazon-ec2,Python,Django,Amazon Web Services,Amazon Ec2,我在运行python项目的EC2实例上很难解析HTTPS。请求刚好超时(错误连接超时)。不过,HTTP运行正常。我采取的步骤如下 我已在ACM中为以下域创建了证书:*.mywebsite.com和mywebsite.com 我已按如下方式设置了53号路线: A记录上的路由策略很简单 我进入了EC2实例负载平衡器的侦听器,将端口从80(HTTP)更改为443(HTTPS),并添加了证书 注意:“转发到”是在端口80(HTTP)上运行的目标组。我读到这是正确的 然后,我进入了我的安全组的入站规

我在运行python项目的EC2实例上很难解析HTTPS。请求刚好超时(错误连接超时)。不过,HTTP运行正常。我采取的步骤如下

  • 我已在ACM中为以下域创建了证书:*.mywebsite.com和mywebsite.com
  • 我已按如下方式设置了53号路线:
  • A记录上的路由策略很简单

  • 我进入了EC2实例负载平衡器的侦听器,将端口从80(HTTP)更改为443(HTTPS),并添加了证书
  • 注意:“转发到”是在端口80(HTTP)上运行的目标组。我读到这是正确的

  • 然后,我进入了我的安全组的入站规则,并添加了HTTPS
  • 在这一点上,我有以下问题:

    a) 考虑到这是一个python/Django项目,是否可以通过aws网站启用HTTPS for EC2,或者我是否需要添加配置文件并部署到我的实例

    b) 我是否需要创建在HTTPS上运行的目标组

    c) 端口80和端口443的负载平衡需要侦听器吗,还是只需要端口443

    d) 在我的安全组上,是否需要端口80才能转到0.0.0.0/0和::0/

    e) 服务器是否应该通过负载平衡器的DNS名称创建记录,还是应该是我的环境的CNAME


    谢谢你的帮助!一旦我们在这里得到答案,我将写一篇指南,并将其发布在youtube上。

    首先让我向您简要介绍一下在这种情况下请求的流程

    正如您正确猜测的那样,负载平衡器(具体来说是应用程序负载平衡器)可以处理SSL流量。这也意味着从负载平衡器到源服务器(本例中提到的目标组),只有http通信流将流动,而不是https。因此,您不必担心在服务器上处理证书。然后,来自源服务器的响应再次封装在SSL隧道中,并由ALB发送回客户端

    这意味着您的最终用户应该至少能够连接到负载平衡器端口443,也可以连接到端口80(可以重定向到443)

    这意味着您的负载平衡器的安全组的端口443(可选80)应向世界或您的用户开放

    在源服务器和ALB之间,流量在应用程序运行的端口中流动,这就是服务器的安全组应该允许访问ALB的端口

    换言之,服务器(EC2)安全组应允许应用程序运行的任何端口上的ALB。

    注意:这不必是80或443,也可以是8080,只要目标组知道它并在该端口上转发请求

    现在回答您的问题:

    a)鉴于这是一个python/Django项目,是否可以通过aws网站启用HTTPS for EC2,或者我是否需要添加配置文件并部署到我的实例?
    你不必这么做。正如我提到的,加密/解密可以卸载到ALB。在文档中阅读更多关于它的信息

    b)我是否需要创建在HTTPS上运行的目标组?
    这建立在前面的问题之上,不,你不必这样做。app server/EC2实例不应与此相关

    c)在端口80和端口443的负载平衡中,还是只在端口443上需要侦听器?
    这取决于您的用例。基本需求是只有443个。如果您希望允许用户仍然登录http站点,然后被重定向到更安全的https版本,那么您可以再次为此使用ALB。更多关于它

    d)在我的安全组上,是否需要端口80才能转到0.0.0.0/0和::0/?
    对于ALB,需要,但对于EC2实例不需要。记住,Ec2从不直接与用户通信,只与ALB通信。因此,您可以更严格地控制EC2上的流量

    e)是通过负载平衡器的DNS名称创建记录,还是应该是我的环境的CNAME?

    使用别名记录。它们更易于管理,AWS将负责映射。更多信息。

    请确认,这意味着我不需要在端口443上运行目标组。对吗?谢谢你提供的细节。很抱歉我的问题e有一个拼写错误。路由53中的别名记录(即A记录)是否引用负载平衡器的DNS名称(例如awseb-awseb-1dfasa4ktz-1214590005.us-east-2.elb.amazonaws.com)或是我的环境的CNAME(例如myproject-dev.us-east-2.elasticbeanstalk.com)?应该是您的ALB。为了解释原因,系统的入口点是ALB,因此用户必须与ALB通信。这意味着您的域名应解析为您的ALB。