V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
ksupertu
V2EX  ›  NGINX

请问如何优雅的利用根据内外网 IP 禁止一些资源的访问?

  •  
  •   ksupertu · 2015-03-16 09:43:38 +08:00 · 3488 次点击
    这是一个创建于 3531 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Nginx新手,最近由于需要替换网站的一个搜索功能到一台ElasticSearch服务器上,将原本直接对外网服务的服务器转移至内网环境(Tomcat),在前面架设了一个Nginx做反向代理;这带来了一个问题就是原有的一个其它网站内拥有的判断内外网ip地址来限制全文资源获取的功能变成了形同虚设,因为所有的流量都来自内网了,求问如何在不改原网站的代码的情况下,利用Nginx对这类资源精确的根据ip禁止?拜谢!
    9 条回复    2015-03-17 00:13:26 +08:00
    kurten
        1
    kurten  
       2015-03-16 09:50:27 +08:00
    nginx有x-real-ip,把来路的ip地址直接发送给后端,后端可以直接用这个判断。
    或者,前端nginx做location的规则判断也可以的。具体规则参看nginx的wiki。
    ryd994
        2
    ryd994  
       2015-03-16 10:04:27 +08:00
    http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header
    proxy_set_header $remote_ip;
    也可以用http_geo分流
    ksupertu
        3
    ksupertu  
    OP
       2015-03-16 11:39:27 +08:00
    @kurten
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;已设置,我说明里写了不改代码~
    ksupertu
        4
    ksupertu  
    OP
       2015-03-16 11:42:37 +08:00
    @ryd994 你所说的我已经设置了,利用Location规则误杀面太大,目前配置的规则就是allow 10.0.0.0/8;
    allow 10.0.0.0/8;
    allow 172.16.0.0/12;
    allow 192.168.0.0/16;
    proxy_pass http://192.168.5.3:808;
    deny all;
    想实现的是更精确的控制,原有系统在外网ip访问状况下会提示禁止访问
    15ir
        5
    15ir  
       2015-03-16 13:06:41 +08:00
    “如何优雅的...”

    知乎的既视感。
    ryd994
        6
    ryd994  
       2015-03-16 13:12:52 +08:00 via Android
    @ksupertu error_page 404
    ksupertu
        7
    ksupertu  
    OP
       2015-03-16 14:13:46 +08:00
    @ryd994 不是这个意思……我指的是更精确的资源控制……
    ryd994
        8
    ryd994  
       2015-03-16 21:12:33 +08:00 via Android
    @ksupertu 那就只有加forwarded_for了
    如果后面用的也是Nginx的话,就用realip恢复ip信息http://nginx.org/en/docs/http/ngx_http_realip_module.html
    billwang
        9
    billwang  
       2015-03-17 00:13:26 +08:00 via Android
    貌似有内容访问管理系统,大概就是这个叫法吧,可以深度屏蔽用户访问内容,是一个硬件,当然就是个服务器安装了些软件。我这边上过这个东东,不过没有启用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3517 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:45 · PVG 12:45 · LAX 20:45 · JFK 23:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.