我有一个在ECS集群中运行的Python 3 Flask应用程序。 Flask应用程序配置为以SSL模式运行。无法通过ALB Cname访问该应用,因为它会生成拒绝连接,如此处所示-
curl -Il https://tek-app.example.com/health
curl: (7) Failed to connect to tek-app.example.com port 443: Connection refused
直接击打ALB并忽略SSL证书异常时,它的工作原理如此处所示-
curl -Il -k https://tek-w-appli-1234.eu-west-1.elb.amazonaws.com/health
HTTP/2 200
date: Sun, 24 Feb 2019 14:49:27 GMT
content-type: text/html; charset=utf-8
content-length: 9
server: Werkzeug/0.14.1 Python/3.7.2
我知道主要的建议是在Nginx或Apache代理后面运行它,并通过它们的配置设置X-Forward标头,但是我认为这超出了解决方案的设计范围。
我也尝试过在应用程序中启用以下功能-
from werkzeug.contrib.fixers import ProxyFix
...
app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app)
...
此修补程序现在可以在Cloudwatch日志中生成正确的源IP,但不允许通过ALB Cname进行连接。
这里缺少一些简单的东西吗?
谢谢-Cname指向正确的ALB。两周前,我在一个Apache服务器上遇到了类似的问题,其解决方法是确保X-Forward-Proto在Apache vhosts.conf文件中使用。所以我想这可能是相似的。
答案 0 :(得分:0)
我又做了一次-在本地开发时,我编辑了/ etc / hosts文件以具有本地条目。然后,当Flask应用程序推送到云中并从同一桌面进行测试时,它引用的是本地DNS条目,而不是公共等效条目,因此连接被拒绝。删除本地条目后,所有内容现在都可以使用。