技术解析

请问如何优雅的利用根据内外网 IP 禁止一些资源的访问?
0
2021-05-26 15:08:36
idczone
Nginx新手,最近由于需要替换网站的一个搜索大带宽服务器功能到一台ElasticSearch服务器上,将原本直接对外网服务的服务器转移至内网环境(Tomcat),在前面架设了一个Nginx做反向代理;这带来了一个问题就是原有的一个其它网站内拥有的判断内外网ip地址来限制全文资源获取的功能变成了形同虚设,因为所有的流量都来自内网了,求问如何在不改原网站的代码的情况下,利用Nginx对这类资源精确的根据ip禁止?拜谢!
nginx有x-real-ip,把来路的ip地址直接发送给后端,后端可以直接用这个判断。
或者,前端nginx做location的规则判断也可以的。具体规则参看nginx的wiki。

http://nginx.org/en/docs/http/ngx_http_proxy_module.html/>proxy_set_header $remote_ip;
也可以用http_geo分流


proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;已设置,我说明里写了不改代码~

你所说的我已经设置了,利用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访问状况下会提示禁止访问

“如何优雅的...”
知乎的既视感。

error_page 404

不是这个意思……我指的是更精确的资源控制……

那就只有加forwarded_for了
如果后面用的也是Nginx的话,就用realip恢复ip信息http://nginx.org/en/docs/http/ngx_http_realip_module.html

貌似有内容访问管理系统,大概就是这个叫法吧,可以深度屏蔽用户访问内容,是一个硬件,当然就是个服务器安装了些软件。我这边上过这个东东,不过没有启用。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服