flask 搭建的网站, nginx 做反向代理,请问怎么获取真实 ip 啊? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
tumb8r
V2EX    Python

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

  •  
  •   tumb8r 2016-07-23 22:49:07 +08:00 8997 次点击
    这是一个创建于 3370 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言    2016-07-23 23:28:35 +08:00
    解决了!!!
    因为 nginx 配置文件设置了
    proxy_set_header Host $host:80;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    因此通过
    from flask import request
    ip=request.headers['X-Forwarded-For']
    就可以获取真实 ip
    15 条回复    2016-07-24 12:02:24 +08:00
    jessynt
        1
    jessynt  
       2016-07-23 22:50:56 +08:00
    tumb8r
        2
    tumb8r  
    OP
       2016-07-23 22:53:02 +08:00
    @jessynt 虽然设置了 proxy_set_header X-Real-IP $remote_addr;,但是不知道怎么通过 python 代码获取啊。。。主要问题还是这个
    clino
        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 里也能用吧
    tumb8r
        4
    tumb8r  
    OP
       2016-07-23 23:09:51 +08:00
    @clino 不懂具体的用法。。。
    SErHo
        5
    SErHo  
       2016-07-23 23:28:05 +08:00
    @tumb8r request.headers 这个包括所有请求头,你打印出来就知道怎么获取了。
    tumb8r
        6
    tumb8r  
    OP
       2016-07-23 23:28:54 +08:00
    @SErHo 嗯嗯!刚好解决
    Kilerd
        7
    Kilerd  
       2016-07-24 00:10:47 +08:00 via Android
    这个不是在 flask 官方文档里面有的东西吗? 肯定没认真去看文档
    tumb8r
        8
    tumb8r  
    OP
       2016-07-24 01:39:44 +08:00 via iPhone
    @Kilerd 准确的来说,,我根本没看
    techmoe
        9
    techmoe  
       2016-07-24 06:15:03 +08:00 via Android
    转 x forward for
    lhbc
        10
    lhbc  
       2016-07-24 07:12:56 +08:00
    X-Forwarded-For 可能会有多个 IP ,如果浏览器使用了代理的话
    正确的做法应该是抓 X-Real-IP ,或者分隔 X-Forwarded-For 取第 1 个值
    aprikyblue
        11
    aprikyblue  
       2016-07-24 08:45:44 +08:00 via Android
    10L 正解, X-Forwarded-For 可能包含多个 ip ,每个途径的代理加进自己的 ip
    aprikyblue
        12
    aprikyblue  
       2016-07-24 08:46:34 +08:00 via Android
    更正下上一楼。。
    加进上一级的 ip
    tumb8r
        13
    tumb8r  
    OP
       2016-07-24 10:51:35 +08:00 via iPhone
    @lhbc 嗯嗯,是的!有看到两个 ip 的
    changshu
        14
    changshu  
       2016-07-24 12:01:02 +08:00
    app 那里处理 IP 直接套 werkzeug.contrib.fixer.ProxyFix 这个 middleware 就行了.
    changshu
        15
    changshu  
       2016-07-24 12:02:24 +08:00
    修正一下, 是 werkzeug.contrib.fixers.ProxyFix , 漏了 fixer 后面的 s
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     928 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 20:51 PVG 04:51 LAX 13:51 JFK 16:51
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86