【问题标题】:How to SSL termination on AWS ELB to Flask App?如何在 AWS ELB 上终止 SSL 到 Flask App?
【发布时间】:2018-12-04 07:51:25
【问题描述】:

我有一个在 EC2 实例上运行的烧瓶应用程序,它位于终止 SSL 的 AWS ELB 后面。然后 ELB 将连接转发到端口 80 上的实例。

我正在尝试强制烧瓶将所有 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)

【问题讨论】:

    标签: amazon-web-services ssl flask


    【解决方案1】:

    理想情况下,您应该在负载均衡器上执行 HTTP -> HTTPS 重定向,而不是在烧瓶本身内。

    见:Redirecting EC2 Elastic Load Balancer from HTTP to HTTPS

    【讨论】:

      【解决方案2】:

      实施 proxyfix 已解决问题。

      from werkzeug.contrib.fixers import ProxyFix
      
      sslify = SSLify(app, subdomains=True, permanent=True)
      app.wsgi_app = ProxyFix(app.wsgi_app)
      

      【讨论】:

        猜你喜欢
        • 2017-03-24
        • 1970-01-01
        • 2019-01-23
        • 2019-10-07
        • 1970-01-01
        • 2022-07-18
        • 1970-01-01
        • 2012-10-10
        • 2017-04-06
        相关资源
        最近更新 更多