Nginx IP封禁及自動(dòng)封禁IP的實(shí)現(xiàn)
1.在Nginx的conf目錄下創(chuàng)建一個(gè)blockip.conf文件
2.里面放需要封禁的IP,格式如下
deny 1.2.3.4;
3.在Nginx的HTTP的配置中添加如下內(nèi)容
include blockips.conf;

4.重啟 Nginx
/usr/local/nginx/sbin/nginx -s reload
然后你就會(huì)看到IP被封禁了,你會(huì)喜提403;

7.小思考:如何實(shí)現(xiàn)使用Nginx自動(dòng)封禁ip的功能
1.AWK統(tǒng)計(jì)access.log,記錄每分鐘訪問(wèn)超過(guò)60次的ip,然后配合nginx進(jìn)行封禁
2.編寫shell腳本
3.crontab定時(shí)跑腳本
好了上面操作步驟列出來(lái)了,那我們先來(lái)實(shí)現(xiàn)第一個(gè)吧

操作一: AWK統(tǒng)計(jì)access.log,記錄每分鐘訪問(wèn)超過(guò)60次的ip
awk '{print $1}' access.log | sort | uniq -cd | awk '{if($1>60)print $0}'
1. awk '{print $1}' access.log 取出access.log的第一列即為ip。
2. sort | uniq -cd 去重和排序
3. awk '{if($1>60)print $0}' 判斷重復(fù)的數(shù)量是否超過(guò)60個(gè),超過(guò)60個(gè)就展示出來(lái)
操作二:編寫shell腳本,實(shí)現(xiàn)整體功能(寫了注釋代碼)
#不能把別人IP一直封著吧,這里就清除掉了
echo "" > /usr/local/nginx/conf/blockip.conf
#前面最開始編寫的統(tǒng)計(jì)數(shù)據(jù)功能
ip_list=$(awk '{print $1}' access.log | sort | uniq -cd | awk '{if($1>60)print $0}')
#判斷這個(gè)變量是否為空
if test -z "$ip_list"
then
#為空寫入 11.log中,并重新啟動(dòng)ngnix
echo "為空" >> /usr/local/nginx/logs/11.log
/usr/local/nginx/sbin/nginx -s reload
else
#如果不為空 前面加上 deny格式和ip寫入blockip.conf中
echo "deny" $ip_list > /usr/local/nginx/conf/blockip.conf
#因?yàn)榍懊鏀y帶了行數(shù),所有我們需要去除掉前面的行數(shù),寫入后在讀取一次
ip_list2=$(awk '{print $3}' /usr/local/nginx/conf/blockip.conf)
#最后再把讀取出來(lái)的值,在次寫入到blockip.conf中
echo "deny" $ip_list2";"> /usr/local/nginx/conf/blockip.conf
#重啟ngnix
/usr/local/nginx/sbin/nginx -s reload
#清空之前的日志,從最新的開始截取
echo "" > /usr/local/nginx/logs/access.log
fi
操作三:使用crontab定時(shí),來(lái)實(shí)現(xiàn)訪問(wèn)每分鐘超過(guò)60的
這個(gè)crontab 就不多講的,不會(huì)的可以去看看我之前的博客地址如下 http://www.fzitv.net/article/144881.htm
直接實(shí)操吧:
crontab -e * * * * * cd /usr/local/nginx/logs/ && sh ip_test.sh 每一分鐘運(yùn)行一次 systemctl restart crond.service 重啟一下配置既可

到此這篇關(guān)于Nginx IP封禁及自動(dòng)封禁IP的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Nginx IP封禁內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 在Nginx中實(shí)現(xiàn)動(dòng)態(tài)封禁IP的三種主流方案
- Nginx如何自動(dòng)封禁可疑Ip
- 詳解Nginx如何封禁IP和IP段
- Nginx實(shí)現(xiàn)動(dòng)態(tài)封禁IP的步驟指南
- Nginx實(shí)現(xiàn)動(dòng)態(tài)封禁IP的設(shè)計(jì)方案
- Nginx+Lua腳本+Redis 實(shí)現(xiàn)自動(dòng)封禁訪問(wèn)頻率過(guò)高IP
- Nginx結(jié)合Openresty通過(guò)Lua+Redis實(shí)現(xiàn)動(dòng)態(tài)封禁IP
- nginx中封禁ip和允許內(nèi)網(wǎng)ip訪問(wèn)的實(shí)現(xiàn)示例
- Nginx如何封禁IP和IP段的實(shí)現(xiàn)
- nginx ip黑名單動(dòng)態(tài)封禁的例子
- Nginx利用Lua+Redis實(shí)現(xiàn)動(dòng)態(tài)封禁IP的方法
- nginx的docker鏡像封禁地區(qū)IP的實(shí)現(xiàn)
相關(guān)文章
利用Nginx反向代理功能解決WEB網(wǎng)站80端口被封的解決方法
大陸的網(wǎng)絡(luò)環(huán)境,都在天朝神獸的制度下讓我等小P民悲劇一片;動(dòng)不動(dòng)就拔網(wǎng)線、封機(jī)房;現(xiàn)在更厲害的一招,從網(wǎng)關(guān)封殺你的80端口,一旦被封,網(wǎng)站域名就無(wú)法訪問(wèn)2012-08-08
keepalived對(duì)nginx進(jìn)行高可用搭建及原理詳解
這篇文章主要為大家介紹了keepalived對(duì)nginx進(jìn)行高可用搭建及原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
nginx代理postgresql的實(shí)現(xiàn)示例
本文主要介紹了nginx代理postgresql的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10
Nginx?Rewrit實(shí)現(xiàn)網(wǎng)頁(yè)跳轉(zhuǎn)功能詳細(xì)步驟
Rewrite主要實(shí)現(xiàn)url地址重寫,以及重定向,就是把傳入web的請(qǐng)求重定向到其他url的過(guò)程,這篇文章主要介紹了Nginx?Rewrit實(shí)現(xiàn)網(wǎng)頁(yè)跳轉(zhuǎn)功能詳細(xì)步驟,需要的朋友可以參考下2024-02-02
nginx?搭建http-flv(rtmp)流媒體的方法步驟
本文主要介紹了nginx?搭建http-flv(rtmp)流媒體的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧<BR>2023-06-06
Nginx屏蔽服務(wù)器名稱與版本信息方式(源碼級(jí)修改)
本文詳解如何通過(guò)源碼修改Nginx 1.25.4,移除Server響應(yīng)頭中的服務(wù)類型和版本信息,以增強(qiáng)安全性,需重新配置、編譯、安裝,升級(jí)時(shí)需重復(fù)此操作2025-09-09

