http://www.axiaoxin.com/article/210/

Nginx配置了https请求后,用户发起https请求时首先和Nginx建立连接,完成SSL握手,而后Nginx作为代理是以http协议将请求转给gunicorn处理的,Nginx再把gunicorn的输出通过SSL加密发回给用户,这中间是透明的,gunicorn只是在处理http请求而已。

这时即使请求时用的是https,flask中的request中wsgi.url_scheme收到的仍然是http,所以在其他url相关的地方的值都是http链接。

解决办法是在flask中使用ProxyFix,并且确保nginx配置中设置了HostX-Forwarded-Proto

flask修改:

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

Nginx配置:

location / {
proxy_pass http://your_upstream/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}

参考文档:

https://groups.google.com/forum/#!topic/pocoo-libs/KAle_rNC1V8

http://docs.jinkan.org/docs/flask/deploying/wsgi-standalone.html#deploying-proxy-setups

http://werkzeug.pocoo.org/docs/contrib/fixers/#werkzeug.contrib.fixers.ProxyFix

https://github.com/mitsuhiko/werkzeug/blob/master/werkzeug/contrib/fixers.py#L81

最新文章

  1. 如何在Windows Server 2008 R2 SP1安装Redis-x64-3.2.100,并且自动注册服务
  2. NPM 使用淘宝镜像
  3. [OC] 理解Bitcode:一种中间代码
  4. 出现( linker command failed with exit code 1)错误总结 (转)
  5. requireJS的引用
  6. 建筑行业如何用BPM替换OA?
  7. ArcGIS API for Silverlight动态标绘的实现
  8. 无责任Windows Azure SDK .NET开发入门篇二[使用Azure AD 进行身份验证]
  9. chmod -R o+rX /data
  10. logstash multiline
  11. 使用脚本管理IIS
  12. linux安装桌面软件
  13. 列表的实现-----数据结构与算法JavaScript描述 第三章
  14. 第九讲:HTML5该canvas推箱子原型实现
  15. LPC2478内存布局以及启动方式
  16. JavaScript从作用域到闭包
  17. SpringMVC之Controller和参数绑定
  18. 【NLP】大白话讲解word2vec到底在做些什么
  19. 2017-9-7-Linux Mint TFTP服务安装开启
  20. Statement、PreparedStatement、CallableStatement的区别

热门文章

  1. concurrent(四)Condition
  2. 异步IRP的教训(已附DUMP)
  3. Ubuntu 在终端关闭情况下仍然运行进程
  4. 批处理中setlocal enabledelayedexpansion的作用详细整理
  5. JConsole远程配置
  6. AQS4源码
  7. python入门之模块
  8. 蚂蚁金服2019实习生面经总结(已拿口头offer)
  9. 笔记:Map(就是用来Ctrl+C,V的)
  10. Java使用正则表达式匹配多行 Pattern flags