Nginx新手,最近由于需要替换网站的一个搜索功能到一台ElasticSearch服务器上,将原本直接对外网服务的服务器转移至内网环境(Tomcat),在前面架设了一个Nginx做反向代理;这带来了一个问题就是原有的一个其它网站内拥有的判断内外网ip地址来限制全文资源获取的功能变成了形同虚设,因为所有的流量都来自内网了,求问如何在不改原网站的代码的情况下,利用Nginx对这类资源精确的根据ip禁止?拜谢!
1
kurten Mar 16, 2015
nginx有x-real-ip,把来路的ip地址直接发送给后端,后端可以直接用这个判断。
或者,前端nginx做location的规则判断也可以的。具体规则参看nginx的wiki。 |
2
ryd994 Mar 16, 2015
http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header
proxy_set_header $remote_ip; 也可以用http_geo分流 |
3
ksupertu OP @kurten
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;已设置,我说明里写了不改代码~ |
4
ksupertu OP @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访问状况下会提示禁止访问 |
5
15ir Mar 16, 2015
“如何优雅的...”
知乎的既视感。 |
8
ryd994 Mar 16, 2015 via Android
@ksupertu 那就只有加forwarded_for了
如果后面用的也是Nginx的话,就用realip恢复ip信息http://nginx.org/en/docs/http/ngx_http_realip_module.html |
9
billwang Mar 17, 2015 via Android
貌似有内容访问管理系统,大概就是这个叫法吧,可以深度屏蔽用户访问内容,是一个硬件,当然就是个服务器安装了些软件。我这边上过这个东东,不过没有启用。
|