首頁 資料庫 Redis Nginx怎麼利用Lua+Redis實現動態封鎖IP

Nginx怎麼利用Lua+Redis實現動態封鎖IP

May 26, 2023 am 10:50 AM
redis lua nginx

一、背景

我們在日常維護網站中,經常會遇到這樣一個需求,為了封鎖某些爬蟲或惡意使用者對伺服器的請求,我們需要建立一個動態的ip 黑名單。對於黑名單之內的 ip ,拒絕提供服務。

二、架構

實作ip 黑名單的功能有很多方法:

1、在作業系統層面,設定iptables,拒絕指定ip 的網路請求;

2、在web server 層面,透過nginx 自身的deny 選項或lua 外掛程式設定ip 黑名單;

#3、在應用程式層面,在在請求服務之前檢查一遍客戶端ip 是否在黑名單。

為了方便管理與分享,我們透過nginx lua redis 的架構實作ip 黑名單的功能,架構圖如下:

Nginx怎麼利用Lua+Redis實現動態封鎖IP

##架構圖


#三、實作

1、安裝nginx lua模組,建議使用openresty,這是一個整合了各種lua 模組的nginx 伺服器:

Nginx怎麼利用Lua+Redis實現動態封鎖IPopenresty

2、安裝並啟動redis 伺服器;

3、設定nginx 範例:

Nginx怎麼利用Lua+Redis實現動態封鎖IPnginx設定

其中

lua_shared_dict ip_blacklist 1m;

由nginx 進程分配一塊1m 大小的共享記憶體空間,用來快取ip 黑名單,請參閱:

https://github.com/openresty/lua-nginx-module#lua_shared_dict

access_by_lua_file lua/ip_blacklist.lua;

Nginx怎麼利用Lua+Redis實現動態封鎖IP

Nginx怎麼利用Lua+Redis實現動態封鎖IP

###################################################################### ##指定lua 腳本位置######4、設定lua 腳本,定期從redis 取得最新的ip 黑名單,檔案內容請參考:######https://gist.github.com/ceelog/ 39862d297d9c85e743b3b5111b7d44cb############lua 腳本內容#########5、在redis 伺服器上新建set 類型的資料ip_blacklist,並加入最新的黑名單。 ######完成以上步驟後,重新載入nginx,設定便開始生效了######這時存取伺服器,如果你的ip 位址在黑名單內的話,將出現拒絕存取:### #########拒絕存取######

以上是Nginx怎麼利用Lua+Redis實現動態封鎖IP的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

docker容器名稱怎麼查 docker容器名稱怎麼查 Apr 15, 2025 pm 12:21 PM

可以通過以下步驟查詢 Docker 容器名稱:列出所有容器(docker ps)。篩選容器列表(使用 grep 命令)。獲取容器名稱(位於 "NAMES" 列中)。

nginx在windows中怎麼配置 nginx在windows中怎麼配置 Apr 14, 2025 pm 12:57 PM

如何在 Windows 中配置 Nginx?安裝 Nginx 並創建虛擬主機配置。修改主配置文件並包含虛擬主機配置。啟動或重新加載 Nginx。測試配置並查看網站。選擇性啟用 SSL 並配置 SSL 證書。選擇性設置防火牆允許 80 和 443 端口流量。

centos redis如何配置Lua腳本執行時間 centos redis如何配置Lua腳本執行時間 Apr 14, 2025 pm 02:12 PM

在CentOS系統上,您可以通過修改Redis配置文件或使用Redis命令來限制Lua腳本的執行時間,從而防止惡意腳本佔用過多資源。方法一:修改Redis配置文件定位Redis配置文件:Redis配置文件通常位於/etc/redis/redis.conf。編輯配置文件:使用文本編輯器(例如vi或nano)打開配置文件:sudovi/etc/redis/redis.conf設置Lua腳本執行時間限制:在配置文件中添加或修改以下行,設置Lua腳本的最大執行時間(單位:毫秒)

怎麼查看nginx是否啟動 怎麼查看nginx是否啟動 Apr 14, 2025 pm 01:03 PM

確認 Nginx 是否啟動的方法:1. 使用命令行:systemctl status nginx(Linux/Unix)、netstat -ano | findstr 80(Windows);2. 檢查端口 80 是否開放;3. 查看系統日誌中 Nginx 啟動消息;4. 使用第三方工具,如 Nagios、Zabbix、Icinga。

docker怎麼啟動容器 docker怎麼啟動容器 Apr 15, 2025 pm 12:27 PM

Docker 容器啟動步驟:拉取容器鏡像:運行 "docker pull [鏡像名稱]"。創建容器:使用 "docker create [選項] [鏡像名稱] [命令和參數]"。啟動容器:執行 "docker start [容器名稱或 ID]"。檢查容器狀態:通過 "docker ps" 驗證容器是否正在運行。

docker怎麼創建容器 docker怎麼創建容器 Apr 15, 2025 pm 12:18 PM

在 Docker 中創建容器: 1. 拉取鏡像: docker pull [鏡像名] 2. 創建容器: docker run [選項] [鏡像名] [命令] 3. 啟動容器: docker start [容器名]

nginx怎麼啟動 nginx怎麼啟動 Apr 14, 2025 pm 01:06 PM

問題:如何啟動 Nginx?答案:安裝 Nginx啟動 Nginx驗證 Nginx 是否已啟動探索其他啟動選項自動啟動 Nginx

centos redis如何配置慢查詢日誌 centos redis如何配置慢查詢日誌 Apr 14, 2025 pm 04:54 PM

在CentOS系統上啟用Redis慢查詢日誌,提升性能診斷效率。以下步驟將指導您完成配置:第一步:定位並編輯Redis配置文件首先,找到Redis配置文件,通常位於/etc/redis/redis.conf。使用以下命令打開配置文件:sudovi/etc/redis/redis.conf第二步:調整慢查詢日誌參數在配置文件中,找到並修改以下參數:#慢查詢閾值(毫秒)slowlog-log-slower-than10000#慢查詢日誌最大條目數slowlog-max-len

See all articles