Nginx 限制訪問 IP 位址動態黑名單

2021-08-15 16:41:49 字數 1443 閱讀 4912

使用 nginx plus r13 時,可以將某些 ip 位址列入黑名單,可以建立並維護黑名單 ip 位址的資料庫。相對的,還可以將某些 ip 位址明確列入白名單。 ip位址資料庫使用 nginx plus api 和 nginx plus keyval 模組進行管理。

首先,通過 nginx keyval 模組開啟資料庫以儲存 ip 位址的黑名單或白名單。

在 nginx 配置檔案中,開啟用於儲存關鍵字和值的區域,例如,1 mb 大小的區域 one。在 http 中使用keyval_zone指令可以開啟:

http
keyval_zone指令中,可以指定乙個用於儲存鍵值資料庫的檔案,並且在 nginx 重啟時檔案保持不變。例如 one.keyval:

keyval_zone zone=one:1m state=one.keyval;
通過api指令將 nginx api 使能為讀寫模式:

...

server

}

強烈建議,對這個 location 限制訪問,例如只允許來自 127.0.0.1 的訪問:

...

server

}

通過以 json 格式傳送 post api 命令 來填充鍵值資料庫。 可以通過 curl 傳送這個命令。 如果區域 zone 為空,則可以一次輸入多個鍵值對,如果區域中已經有乙個或多個鍵值對,則只能新增一對:

curl -x post -d '' -s
在 http 中使用keyval指令可以建立使用者 ip 位址與鍵值對的對映。該指令將在鍵值資料庫(用 zone = parameter 指定)中建立乙個新變數(用指令的第二個引數指定),該變數的值由鍵(用指令的第乙個引數指定)查詢:

''-s可以傳送下面的 curl 命令刪除乙個已經存在的入口:

curl -x delete -d

''-s

乙個 nginx 配置檔案:

}}用 curl 命令填充黑名單(value 1)和白名單(value 0)到空 zone:

curl -x post -d '' -s
這個例子的配置詳情如下:

nginx 限制 ip 訪問

環境 centos7.6 nginx 1.16.1 背景 nginx 伺服器已經配置好了公網 ip 和 網域名稱證書 公網 ip 對我來說是透明的,沒有管理許可權,所以只好在 nginx 伺服器上做 ip 限制 未修改之前,登入日誌的 remote addr 總是為 192.12.182.3,猜測這...

nginx限制ip訪問

nginx限制ip,目前從網上發現了兩種解決方法 1 是採用原生的方式來實現 set flag f if remote addr 10.1.20.35 if flag 1 2 是採用geo模組來實現,預設1.16.1是自帶的有這個模組 http中增加如下 geo bad user location中...

vsftp限制ip位址訪問

vsftpd使用standalone模式啟動 我的centos5.5沒 有builddefs.h這個檔案,直接從第二步開始,也沒什麼問題。3 重啟vsftpd服務 service vsftpd restart 4 修改 etc hosts.deny 加入vsftpd all 5.修改 etc hos...