我有一个在 EC2 实例上运行的 flask 应用程序,它位于终止 SSL 的 AWS ELB 后面。然后 ELB 将连接转发到端口 80 上的实例。
我试图强制 Flask 将所有 http 请求重定向到 https。我试过 SSLify 和以下内容,问题是当我使用以下内容时,我收到许多重定向错误。我相信这是因为 ELB 转发到 80 上的实例,然后重定向将其发送回 ELB,从而创建无限循环。 SSLify 似乎不起作用,因为该实例不是 SSL 终止点。
看起来我需要实现 request.is_secure 才能完成这项工作并遵守 X-Forwarded-Protocol,但我不确定如何实现。
@app.before_request
def before_request():
if request.url.startswith('http://'):
url = request.url.replace('http://', 'https://', 1)
code = 301
return redirect(url, code=code)
最佳答案
实现 proxyfix 已解决问题。
from werkzeug.contrib.fixers import ProxyFix
sslify = SSLify(app, subdomains=True, permanent=True)
app.wsgi_app = ProxyFix(app.wsgi_app)
关于amazon-web-services - 如何将 AWS ELB 上的 SSL 终止到 Flask App?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51028525/