問題起因:
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