最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

lua+nginx實(shí)現(xiàn)黑名單禁止訪問的示例代碼

 更新時(shí)間:2025年11月05日 09:42:26   作者:蚊子愛喝水  
本文介紹如何使用Nginx與Lua腳本通過OpenResty平臺(tái)實(shí)現(xiàn)高效的IP黑名單功能,利用Redis存儲(chǔ)黑名單,定時(shí)更新共享內(nèi)存字典,防止惡意IP訪問,感興趣的可以了解一下

可以使用基于 Nginx 與 Lua 的高性能 Web 平臺(tái)OpenResty。 OpenResty地址

安裝簡單,略去。

 # 分配內(nèi)存
    lua_shared_dict ip_blacklist 1m;
 
    server {
        listen       80;
        server_name  localhost;
 
        root   E:/www/web/test;
 
        access_log  logs/host.access.log ;
        error_log  logs/host.error.log;
 
        location / {
            access_by_lua_file ../lua/black.lua;
            index  index.html index.htm;
        }
 
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
 
 
        location ~ \.php$ {
        # 指定lua文件
            access_by_lua_file "D:\openresty-1.15.8.1-win64/lua/black.lua";
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

black.lua

local redis_host    = "127.0.0.1" -- 這里一定是redis的IP地址
local redis_port    = "6379"
 
-- connection timeout for redis in ms. don't set this too high!
local redis_connection_timeout = 1000
 
-- check a set with this key for blacklist entries
local redis_key     = "ip_blacklist"
 
-- cache lookups for this many seconds
local cache_ttl     = 100
 
-- end configuration
 
local ip                = ngx.var.remote_addr
local ip_blacklist              = ngx.shared.ip_blacklist
local last_update_time  = ip_blacklist:get("last_update_time");
 
-- only update ip_blacklist from Redis once every cache_ttl seconds:
if last_update_time == nil or last_update_time < ( ngx.now() - cache_ttl ) then
 
  local redis = require "resty.redis";
  local red = redis:new();
 
  red:set_timeout(redis_connect_timeout);
 
  local ok, err = red:connect(redis_host, redis_port);
 
  if not ok then
    ngx.say("redis connect failed: ", err)
    ngx.log(ngx.DEBUG, "Redis connection error while retrieving ip_blacklist: " .. err);
    return ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
  else
    -- local res, err = red:auth("foobared") -- 配置redis的密碼
 
    --if not res then
        --ngx.say("redis auth is error: ", err)
        --return
    --end
    red:select(0) -- 設(shè)置redis的db
    local new_ip_blacklist, err = red:smembers(redis_key);
    if err then
      ngx.log(ngx.DEBUG, "Redis read error while retrieving ip_blacklist: " .. err);
    else
      -- replace the locally stored ip_blacklist with the updated values:
      ip_blacklist:flush_all();
      for index, banned_ip in ipairs(new_ip_blacklist) do
        ip_blacklist:set(banned_ip, true);
      end
 
      -- update time
      ip_blacklist:set("last_update_time", ngx.now());
    end
  end
end
 
 
if ip_blacklist:get(ip) then
  --ngx.say(ip)
  ngx.log(ngx.DEBUG, "Banned IP detected and refused access: " .. ip);
  return ngx.exit(ngx.HTTP_FORBIDDEN);
end

到此這篇關(guān)于lua+nginx實(shí)現(xiàn)黑名單禁止訪問的示例代碼的文章就介紹到這了,更多相關(guān)lua+nginx黑名單禁止訪問內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx配置方向代理及目錄白名單配置教程

    Nginx配置方向代理及目錄白名單配置教程

    文章介紹了Nginx反向代理的配置方法,包括基本配置、events配置、http配置、server配置和location配置,通過配置location塊,可以實(shí)現(xiàn)不同的請(qǐng)求路徑轉(zhuǎn)發(fā)到不同的后端服務(wù)器,此外,還介紹了目錄白名單的配置方法,可以根據(jù)請(qǐng)求的目錄路徑來決定是否轉(zhuǎn)發(fā)
    2026-02-02
  • Nginx靜態(tài)文件響應(yīng)POST請(qǐng)求 提示405錯(cuò)誤的解決方法

    Nginx靜態(tài)文件響應(yīng)POST請(qǐng)求 提示405錯(cuò)誤的解決方法

    Apache、IIS、nginx等絕大多數(shù)web服務(wù)器,都不允許靜態(tài)文件響應(yīng)POST請(qǐng)求,否則會(huì)返回“HTTP/1.1 405 Method not allowed”錯(cuò)誤
    2013-04-04
  • Nginx+Keepalived實(shí)現(xiàn)雙機(jī)主備的方法

    Nginx+Keepalived實(shí)現(xiàn)雙機(jī)主備的方法

    這篇文章主要介紹了Nginx+Keepalived實(shí)現(xiàn)雙機(jī)主備的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Ubuntu+Nginx+Mysql+Php+Zend+eaccelerator安裝配置文字版

    Ubuntu+Nginx+Mysql+Php+Zend+eaccelerator安裝配置文字版

    把我架設(shè)lnmp網(wǎng)站的過程寫出來,希望對(duì)想架設(shè)網(wǎng)站的朋友有所幫助,如有更好的辦法請(qǐng)?zhí)岢鰜?/div> 2012-02-02
  • 為Nginx服務(wù)器配置黑名單或白名單功能的防火墻

    為Nginx服務(wù)器配置黑名單或白名單功能的防火墻

    這篇文章主要介紹了為Nginx服務(wù)器配置黑名單或白名單功能的防火墻的方法,文中還附帶介紹了一個(gè)基于lua的第三方防火墻模塊,需要的朋友可以參考下
    2016-01-01
  • nginx做代理轉(zhuǎn)發(fā)前端請(qǐng)求到后端的代碼示例

    nginx做代理轉(zhuǎn)發(fā)前端請(qǐng)求到后端的代碼示例

    Nginx作為反向代理服務(wù)器,可以有效處理請(qǐng)求并轉(zhuǎn)發(fā)到后端服務(wù)器,這篇文章主要介紹了nginx做代理轉(zhuǎn)發(fā)前端請(qǐng)求到后端的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-01-01
  • Nginx實(shí)現(xiàn)https網(wǎng)站配置代碼實(shí)例

    Nginx實(shí)現(xiàn)https網(wǎng)站配置代碼實(shí)例

    這篇文章主要介紹了Nginx實(shí)現(xiàn)https網(wǎng)站配置代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 一篇文章讀懂nginx的gzip_static模塊

    一篇文章讀懂nginx的gzip_static模塊

    gzip是針對(duì)于請(qǐng)求實(shí)時(shí)進(jìn)行壓縮,cpu開銷大,gzip_static?完全可以在編譯后使用壓縮工具搞出來,下面這篇文章主要給大家介紹了如何通過一篇文章讀懂nginx的gzip_static模塊,需要的朋友可以參考下
    2022-05-05
  • Nginx 多域名配置的方法

    Nginx 多域名配置的方法

    本篇文章主要介紹了Nginx 多域名配置的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • Nginx 轉(zhuǎn)發(fā)匹配規(guī)則的實(shí)現(xiàn)

    Nginx 轉(zhuǎn)發(fā)匹配規(guī)則的實(shí)現(xiàn)

    這篇文章主要介紹了Nginx 轉(zhuǎn)發(fā)匹配規(guī)則的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評(píng)論

云霄县| 左贡县| 泰州市| 天水市| 安福县| 陈巴尔虎旗| 晋州市| 安宁市| 东至县| 聊城市| 景泰县| 大城县| 栖霞市| 龙陵县| 阿坝县| 普兰店市| 黄浦区| 宝坻区| 阳高县| 西青区| 白河县| 南通市| 台北县| 嘉兴市| 汉寿县| 类乌齐县| 措勤县| 建平县| 博兴县| 诏安县| 宝丰县| 平顶山市| 彰化县| 库车县| 余干县| 景泰县| 中卫市| 姜堰市| 衡山县| 若尔盖县| 明溪县|