Завершение SSL в приложении AWS ELB для Flask - PullRequest
0 голосов
/ 25 июня 2018

У меня есть приложение фляги, работающее на экземпляре EC2, оно находится за AWS ELB, который завершает SSL. Затем 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)

1 Ответ

0 голосов
/ 25 июня 2018

Внедрение proxyfix решило проблему.

from werkzeug.contrib.fixers import ProxyFix

sslify = SSLify(app, subdomains=True, permanent=True)
app.wsgi_app = ProxyFix(app.wsgi_app)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...