问题背景:
工程中使用到Flask做重定向,浏览器端用https协议
访问服务,通过url_for跳转后,默认跳到http协议
的服务。通过阅读文档,发现需要Nginx配置特定请求头
。
具体方法:
- 由于Flask默认不处理转发头
X-Forwarded-Proto
,即时Nginx
代理中转发了该请求头,依然无效;proxy_set_header X-Forwarded-Proto $scheme
- 需要利用ProxyFix,让Flask支持处理
X-Forwarded-Proto
:from werkzeug.middleware.proxy_fix import ProxyFix app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1)
参考文档:
一、dormousehole.readthedocs.io/en/latest/deploying/wsgi-standalone.html;
二、https://werkzeug.palletsprojects.com/en/latest/middleware/proxy_fix/#werkzeug.middleware.proxy_fix.ProxyFix;