如何配置.ebextensions,以便EB负载均衡器终止https,然后将未加密的请求转发到我的EC2实例。 EC2实例读取请求。
我的负载平衡器在2个端口上接受请求。 80和443。443有一个上载的证书,我通过“ AWS Route 53”购买了该证书,并通过“ AWS Certificate Manager”请求了证书(需要打开端口443)。
(*** 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/