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

2015-03-16 09:43:38 +08:00
 ksupertu
Nginx新手,最近由于需要替换网站的一个搜索功能到一台ElasticSearch服务器上,将原本直接对外网服务的服务器转移至内网环境(Tomcat),在前面架设了一个Nginx做反向代理;这带来了一个问题就是原有的一个其它网站内拥有的判断内外网ip地址来限制全文资源获取的功能变成了形同虚设,因为所有的流量都来自内网了,求问如何在不改原网站的代码的情况下,利用Nginx对这类资源精确的根据ip禁止?拜谢!
3371 次点击
所在节点    NGINX
9 条回复
kurten
2015-03-16 09:50:27 +08:00
nginx有x-real-ip,把来路的ip地址直接发送给后端,后端可以直接用这个判断。
或者,前端nginx做location的规则判断也可以的。具体规则参看nginx的wiki。
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
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
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
2015-03-16 13:06:41 +08:00
“如何优雅的...”

知乎的既视感。
ryd994
2015-03-16 13:12:52 +08:00
@ksupertu error_page 404
ksupertu
2015-03-16 14:13:46 +08:00
@ryd994 不是这个意思……我指的是更精确的资源控制……
ryd994
2015-03-16 21:12:33 +08:00
@ksupertu 那就只有加forwarded_for了
如果后面用的也是Nginx的话,就用realip恢复ip信息http://nginx.org/en/docs/http/ngx_http_realip_module.html
billwang
2015-03-17 00:13:26 +08:00
貌似有内容访问管理系统,大概就是这个叫法吧,可以深度屏蔽用户访问内容,是一个硬件,当然就是个服务器安装了些软件。我这边上过这个东东,不过没有启用。

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

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

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

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

© 2021 V2EX