nginx 屏蔽某些ip,防止有些人刷接口攻击
怎么抓取對方的ip呢?抓取到了,又怎么寫進去nginx去呢?這兩個問題,沒解決就是不知道怎么處理。
1、怎么抓取對方的ip呢?
答:用戶訪問接口時候,我們代碼里面會獲取當前訪問的ip,記錄訪問的次數頻率等,超過多少次就寫進去某個文件里面
2、抓取到了,又怎么寫進去nginx去呢?
答:include 方式引進被禁用的ip
如圖:
獲取ip代碼(php代碼)
if(getenv('HTTP_CLIENT_IP')){$onlineip = getenv('HTTP_CLIENT_IP'); }elseif(getenv('HTTP_X_FORWARDED_FOR')){$onlineip = getenv('HTTP_X_FORWARDED_FOR'); }elseif(getenv('REMOTE_ADDR')){$onlineip = getenv('REMOTE_ADDR'); }else{$onlineip = $HTTP_SERVER_VARS['REMOTE_ADDR']; } $txt_ip = 'deny '.$onlineip.';'; file_put_contents("ip.conf", $txt_ip.PHP_EOL, FILE_APPEND);?上面代碼只是獲ip,一分鐘,訪問多少以上才寫入這個文件,就根據你們的自己定義了。
測試訪問結果
屏蔽ip 知識
?1、禁止某一個具體ip時,在? ?ip.conf 中添加 ,切記以分號結尾
? ? ? ? deny 123.123.123.123;
?2、允許或禁止所有ip
? ? ? ? # block all ips?
? ? ? ? deny all;?
? ? ? # allow all ips?
? ? ? ? allow all;?
?3、網段封禁
? ? ? ? #封整個段即從123.0.0.1到123.255.255.254的命令
? ? ? ? deny 123.0.0.0/8
? ? ? #封IP段即從123.45.0.1到123.45.255.254的命令
? ? ? ? deny 124.45.0.0/16
? ? ? #封IP段即從123.45.6.1到123.45.6.254的命令是
? ? ? ? deny 123.45.6.0/24
?4、在nginx.conf 的 http{} 代碼段中添加,include 'ip.conf';
總結
以上是生活随笔為你收集整理的nginx 屏蔽某些ip,防止有些人刷接口攻击的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 看风云变幻,自云淡风轻
- 下一篇: Linux unison 效率,Linu