使用ProxyFix调整代理后的WSGI环境(解决Flask项目经代理后访问https跳转成http问题)

问题简述

当flask项目经过nginx代理后,通过https访问,即使nginx设置了header X-Forwarded-Proto,但flask request中的wsgi.url_scheme仍然是http。

解决一

在url_for构造url的时候把scheme指定为header中的X-Forwarded-Proto。

url_for("xxx.xxx”, _external=True, _scheme=request.headers.get("X-Forwarded-Proto", "http")))

解决二

解决一确实可以解决问题但好像不够优雅。
另外一个则是使用ProxyFix调整代理后的WSGI的环境,使用也是非常的简单。

from werkzeug.middleware.proxy_fix import ProxyFix
app = ProxyFix(app, x_proto=1)

参考链接

Flask文档中的代理设置:https://dormousehole.readthedocs.io/en/latest/deploying/wsgi-standalone.html
Werkzeug文档中的ProxyFix:https://werkzeug.palletsprojects.com/en/master/middleware/proxy_fix/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值