我使用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是唯一的方法吗?
答案 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)