amazon-web-services - 如何将 AWS ELB 上的 SSL 终止到 Flask App?

标签 amazon-web-services ssl flask

我有一个在 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/

相关文章:

ssl - 如何通过带有双向SSL身份验证的完整客户端使用t3连接到WebLogic JMS队列?

node.js - 意外 token {../node_modules/fs-extra/lib/mkdirs/make-dir.js :85 } catch { || brazil-build

linux - 如何在亚马逊 Linux 上安装 openjdk "1.8.0_20-b26"?

ssl - MacOS Mojave 更新 SSL/TLS 后无法从 'https ://rubygems.org/' 安装 gems(?)

Python 记录 : how to add a custom field to LogRecord, 并注册一个全局回调来设置它的值

javascript - 使用 flask 和 javascript 的动态事件源

javascript - 在 Ajax 中使用数组

amazon-web-services - Tensorflow docker 图像不使用 GPU 进行推理/预测

javascript - 使用 axios 将图像上传到 AWS 预签名帖子 URL

python - Requests SSLError : HTTPSConnectionPool(host ='www.recruit.com.hk' , port=443): 超过 url 的最大重试次数