如何使用Gunicorn将http重定向到https

时间:2018-03-30 09:25:35

标签: python flask gunicorn

我使用Flask作为Web应用程序,将http重定向到https,我在app.py中添加了这样的代码:

@app.before_request
def before_request():
    if request.url.startswith('http://'):
        url = request.url.replace('http://', 'https://', 1)
        return redirect(url, code=301)


if __name__ == '__main__':
    app.run()

和supervisor.conf中的gunicorn命令是:

command=/home/MyToDo/venv/bin/gunicorn --certfile=/home/MyToDo/SSL/mytodo.vip.cer --keyfile=/home/MyToDo/SSL/mytodo.vip.key -w3 -b0.0.0.0:443 -b0.0.0.0:80 app:app

但是当我访问网站时,我仍然需要在网址前面添加“https://”,它没有自动重定向。那么如何让gunicorn将http重定向到https,使用Nginx是唯一的方法吗?

1 个答案:

答案 0 :(得分:0)

我在使用gunicorn在Google App Engine Flexible环境上运行Flask时遇到了相同的问题。通过使用 Werkzeug 版本 0.14.1 werkzeug.contrib.fixers.ProxyFix 解决。

from werkzeug.contrib.fixers import ProxyFix
app = Flask(__name__)

app.wsgi_app = ProxyFix(app.wsgi_app)