如何配置.ebextensions,以便EB负载均衡器终止https,然后将未加密的请求转发到我的EC2实例。 EC2实例读取请求。

我的负载平衡器在2个端口上接受请求。 80和443。443有一个上载的证书,我通过“ AWS Route 53”购买了该证书,并通过“ AWS Certificate Manager”请求了证书(需要打开端口443)。

python - 允许EC2监听端口443,以获取来自负载均衡器的未加密请求-LMLPHP

(*** ssl证书隐藏在上面)

此外,我的安全组允许HTTP超过443。

问题是我不知道如何编写.ebextensions/...config以允许接受从负载均衡器传递的超过443的未加密请求。

我发现了这个(amazon文档):
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance-python.html
和(堆栈溢出):
Flask on Elastic Beanstalk with SSL gives 403 Forbidden

但是我认为当负载均衡器仅转发加密的请求时,这两个示例都可以作为示例。

我在下面尝试过,但未成功:

#https.config
Resources:
  sslSecurityGroupIngress:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupName: {Ref : AWSEBSecurityGroup}
      IpProtocol: tcp
      ToPort: 443
      FromPort: 443
      CidrIp: 0.0.0.0/0


我希望负载均衡器执行解密,然后将未加密的请求转发到我的应用程序使用的端口。

在我的应用中:

# wsgi.py
from app import application

if __name__ == "__main__":
    application.run(host='0.0.0.0', port=443)


当前http运行良好且速度很快,但是https只是超时。

我是一名开发人员,但对sysops几乎一无所知。

我已经尝试调试了一天多,因此我们将不胜感激。

更新:

基于Configure apache to listen on port other than 80,我尝试更改:


Listen 80中的Listen 443/etc/httpd/conf/httpd.conf
<VirtualHost *:80>中的<VirtualHost *:443>/etc/httpd/conf.d/wsgi.conf
然后跑sudo /sbin/service httpd restart

最佳答案

检查一下。

AWS - SSL/https on load balancer

您真的应该考虑不要使用内置的flask网络服务器,因为它仅用于开发。尝试uwsgi或gunicorn

关于python - 允许EC2监听端口443,以获取来自负载均衡器的未加密请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49699654/

10-09 17:09