如果是通过 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 |