flask 搭建的网站, nginx 做反向代理,请问怎么获取真实 ip 啊?

2016-07-23 22:49:07 +08:00
 tumb8r

如果是通过 flask 的 request.remote_addr 获取的 ip 都是 127.0.0.1

8448 次点击
所在节点    Python
15 条回复
jessynt
2016-07-23 22:50:56 +08:00
tumb8r
2016-07-23 22:53:02 +08:00
@jessynt 虽然设置了 proxy_set_header X-Real-IP $remote_addr;,但是不知道怎么通过 python 代码获取啊。。。主要问题还是这个
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 里也能用吧
tumb8r
2016-07-23 23:09:51 +08:00
@clino 不懂具体的用法。。。
SErHo
2016-07-23 23:28:05 +08:00
@tumb8r request.headers 这个包括所有请求头,你打印出来就知道怎么获取了。
tumb8r
2016-07-23 23:28:54 +08:00
@SErHo 嗯嗯!刚好解决
Kilerd
2016-07-24 00:10:47 +08:00
这个不是在 flask 官方文档里面有的东西吗? 肯定没认真去看文档
tumb8r
2016-07-24 01:39:44 +08:00
@Kilerd 准确的来说,,我根本没看
techmoe
2016-07-24 06:15:03 +08:00
转 x forward for
lhbc
2016-07-24 07:12:56 +08:00
X-Forwarded-For 可能会有多个 IP ,如果浏览器使用了代理的话
正确的做法应该是抓 X-Real-IP ,或者分隔 X-Forwarded-For 取第 1 个值
aprikyblue
2016-07-24 08:45:44 +08:00
10L 正解, X-Forwarded-For 可能包含多个 ip ,每个途径的代理加进自己的 ip
aprikyblue
2016-07-24 08:46:34 +08:00
更正下上一楼。。
加进上一级的 ip
tumb8r
2016-07-24 10:51:35 +08:00
@lhbc 嗯嗯,是的!有看到两个 ip 的
changshu
2016-07-24 12:01:02 +08:00
app 那里处理 IP 直接套 werkzeug.contrib.fixer.ProxyFix 这个 middleware 就行了.
changshu
2016-07-24 12:02:24 +08:00
修正一下, 是 werkzeug.contrib.fixers.ProxyFix , 漏了 fixer 后面的 s

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/294472

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX