如果是通过 flask 的 request.remote_addr 获取的 ip 都是 127.0.0.1
1
jessynt 2016-07-23 22:50:56 +08:00
|
2
tumb8r OP @jessynt 虽然设置了 proxy_set_header X-Real-IP $remote_addr;,但是不知道怎么通过 python 代码获取啊。。。主要问题还是这个
|
3
clino 2016-07-23 22:57:46 +08:00
我之前给 uliweb 写的 app: https://github.com/zhangchunlin/shapps/blob/master/shapps/auth/xforwardedfor/middle_xforwardedfor.py ,这个是配合 nginx 的 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 用的
limodou 说用 werkzeug 的 middleware werkzeug.contrib.fixers.ProxyFix 也是一样的效果,估计 flask 里也能用吧 |
7
Kilerd 2016-07-24 00:10:47 +08:00 via Android
这个不是在 flask 官方文档里面有的东西吗? 肯定没认真去看文档
|
9
techmoe 2016-07-24 06:15:03 +08:00 via Android
转 x forward for
|
10
lhbc 2016-07-24 07:12:56 +08:00
X-Forwarded-For 可能会有多个 IP ,如果浏览器使用了代理的话
正确的做法应该是抓 X-Real-IP ,或者分隔 X-Forwarded-For 取第 1 个值 |
11
aprikyblue 2016-07-24 08:45:44 +08:00 via Android
10L 正解, X-Forwarded-For 可能包含多个 ip ,每个途径的代理加进自己的 ip
|
12
aprikyblue 2016-07-24 08:46:34 +08:00 via Android
更正下上一楼。。
加进上一级的 ip |
14
changshu 2016-07-24 12:01:02 +08:00
app 那里处理 IP 直接套 werkzeug.contrib.fixer.ProxyFix 这个 middleware 就行了.
|
15
changshu 2016-07-24 12:02:24 +08:00
修正一下, 是 werkzeug.contrib.fixers.ProxyFix , 漏了 fixer 后面的 s
|