CDN或负载均衡或WAF,后端服务器获取真实IP
问题起因:
1. 后端PHP的$_SERVER["REMOTE_ADDR"]个别服务器获取不到真实IP
2. iptables 和 悬镜 等工具,设置IP黑名单不起作用
简单点说,请求到服务器要经过,CDN或负载均衡或WAF等,而它们是以代理的方法访问后端服务器
将IP地址,换成它们的IP地址,所以看到的是 代理proxy的IP,有的到达服务器前面的这些软件工具
是可以设置,显地真实IP,比如阿里云的SLB,所以有的是代理的IP,有的是真实的IP
在来了解一个,X-Forwarded-For
X-Forwarded-For 简称XFF头,是一个 HTTP 扩展头部,用来表示 HTTP 请求端真实 IP。现在已经被很多代理软件采用
它使用,比如CDN或负载均衡或WAF后,它会在HTTP头上加一个 X-Forwarded-For
它的格式,X-Forwarded-For: client1, proxy1, proxy2。
所以如果是PHP获取真实IP,XFF的第一个IP来获取真实IP。
至于,iptables 限制IP,不起作用,只能在nginx或者apache上想办法。
1. nginx realip 或者 apache rpaf 的模块来获取真实IP,然后,自己写脚本在 nginx 或者 apache 限制某些 IP 访问。
2. 现在很多的,CDN或负载均衡或WAF等,黑名单接口,可以获取到非法IP然后脚本过滤掉。
by bin