婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > nginx ip黑名單動態封禁的例子

nginx ip黑名單動態封禁的例子

熱門標簽:百度地圖標注公司位置要多少錢 山東企業外呼系統公司 濮陽好的聯通400電話申請 地圖標注黃河的位置 虛假地圖標注 承德地圖標注公司 靈圖uu電子寵物店地圖標注 400電話號碼辦理多少錢 地圖標注如何改成微信號

網站被惡意請求,拉黑IP是重要的手段,如果每次拉黑都要到nginx上配置,未免太low了;我們需要更方便的控制nginx IP黑名單。

1.方案

黑名單持久化到mysql (常見的方案是redis,但不利于控制,如:不同的IP設置不同的有效期、IP的CRUD、統計等等);

通過lua-nginx-module,在nginx中開辟一塊內存(lua_shared_dict),lua將黑名單定期從mysql全量刷新至lua_shared_dict;

所有請求,都要到與lua_shared_dict中的IP check一下。

2.安裝

2.1 安裝luajit

cd LuaJIT-2.0.5
make
make install PREFIX=/usr/local/luajit

2.2.安裝nginx時,將lua模塊編譯進去

export LUAJIT_LIB=/usr/local/luajit/lib
export LUAJIT_INC=/usr/local/luajit/include/luajit-2.1
 
./configure --prefix=/nginx \

--with-ld-opt="-Wl,-rpath,/usr/local/luajit/lib" \

--add-module=/opt/ngx_devel_kit-0.3.1rc1 \

--add-module=/opt/lua-nginx-module-0.10.14rc3
 
make -j2
make install
ln -s /nginx/sbin/nginx /usr/sbin/nginx

3.配置

3.1 nginx配置

http {
  server_tokens off;
  lua_package_path "/usr/local/lib/lua/?.lua;;";
  lua_shared_dict ip_blacklist 4m;
}
 
server {
  set $real_ip $remote_addr;
  if ( $http_x_forwarded_for ~ "^(\d+\.\d+\.\d+\.\d+)" ) {
    set $real_ip $1;
  }
 
  # 管理信息,訪問該URL可以查看nginx中的IP黑名單信息
  location /get-ipblacklist-info {
    access_by_lua_file conf/lua/get_ipblacklist_info.lua;
  }
 
  # 同步URL,通過定時任務調用該URL,實現IP黑名單從mysql到nginx的定時刷新
  location /sync-ipblacklist {
   access_by_lua_file conf/lua/sync_ipblacklist.lua;
  }
 
  # 生產域名配置,所有需要IP黑名單控制的location,都要包含以下語句
  location / {
   access_by_lua_file conf/lua/check_realip.lua;
  }
 
}

nginx服務器配置以下crrontab

* * * * * /usr/bin/curl -o /dev/null -s http://127.0.0.1/sync-ipblacklist > /dev/null 2>&1

3.2 lua腳本

sync_ipblacklist.lua

local mysql_host = "ip of mysql server"
local mysql_port = 3306
local database = "dbname"
local username = "user"
local password = "password"
 
-- update ip_blacklist from mysql once every cache_ttl seconds
local cache_ttl  = 1
local mysql_connection_timeout = 1000
 
local client_ip  = ngx.var.real_ip
local ip_blacklist  = ngx.shared.ip_blacklist
local last_update_time = ip_blacklist:get("last_update_time");
 
if last_update_time == nil or last_update_time < ( ngx.now() - cache_ttl ) then
 
 local mysql = require "resty.mysql";
 local red = mysql:new();
 
 red:set_timeout(mysql_connect_timeout);
 
 local ok, err, errcode, sqlstate = red:connect{
     host = mysql_host,
     port = mysql_port,
     database = database,
     user = username,
     password = password,
     charset = "utf8",
     max_packet_size = 1024 * 1024,
    }
 if not ok then
 ngx.log(ngx.ERR, "mysql connection error while retrieving ip_blacklist: " .. err);
 else
 new_ip_blacklist, err, errcode, sqlstate = red:query("select ip_addr from ip_blacklist where status = 0 order by create_time desc limit 10000", 100)
 if not new_ip_blacklist then
  ngx.log(ngx.ERR, "bad result. errcode: " .. errcode .. " sqlstate: " .. sqlstate .. " err: " .. err);
  return
 end
 
 ip_blacklist:flush_all();
 for k1, v1 in pairs(new_ip_blacklist) do
  for k2, v2 in pairs(v1) do
  ip_blacklist:set(v2,true);
  end
 end
 
 ip_blacklist:set("last_update_time", ngx.now());
 end
end
 
ngx.say("sync successful");

get_ipblacklist_info.lua

-- 調用URL查看黑名單信息
-- 1萬IP消耗不到1.5M ngx.shared內存
-- 獲取所有KEY會堵塞別的正常請求對ngx.shared內存的訪問,因此只能取少數key展示
require "resty.core.shdict"
ngx.say("total space: " .. ngx.shared.ip_blacklist:capacity() .. "<br/>");
ngx.say("free space: " .. ngx.shared.ip_blacklist:free_space() .. "<br/>");
ngx.say("last update time: " .. os.date("%Y%m%d_%H:%M:%S",ngx.shared.ip_blacklist:get("last_update_time")) .. "<br/>");
ngx.say("first 100 keys: <br/>");
ngx.say("--------------------------<br/>");
ip_blacklist = ngx.shared.ip_blacklist:get_keys(100);
for key, value in pairs(ip_blacklist) do
 ngx.say(key .. ": " .. value .. "<br/>");
end

check_realip.lua

if ngx.shared.ip_blacklist:get(ngx.var.real_ip) then
 return ngx.exit(ngx.HTTP_FORBIDDEN);
end

3.3 數據庫設計

CREATE TABLE `ip_blacklist` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `ip_addr` varchar(15) COLLATE utf8mb4_bin DEFAULT NULL,
 `status` int(11) DEFAULT '0' COMMENT '0: valid 有效, 1: invalid 失效',
 `effective_hour` decimal(11,2) DEFAULT '24' COMMENT '有效期,單位:小時',
 `ip_source` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '黑名單來源',
 `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
 `modify_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 `remark` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '備注',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
 
 
CREATE PROCEDURE proc_ip_blacklist_status_update()
-- 將過期的IP狀態改為失效
begin 
 update ip_blacklist
 set status=1
 where date_add(create_time,INTERVAL effective_hour hour) < now();
 commit;
end;
 
 
CREATE EVENT job_ip_blacklist_status_update
ON SCHEDULE EVERY 1 MINUTE
ON COMPLETION PRESERVE
ENABLE
DO
call proc_ip_blacklist_status_update();

4 CRUD

黑名單產生有手工的方式,也有自動的方式,或者兩者兼有。

自動的方式有通過python分析elk日志,將惡意IP自動寫入mysql,這是個大話題,這里不涉及。

手工的方式可以人肉查看elk請求日志,發現惡意IP,手工填入mysql,這里推薦一個開源的CRUD工具,用戶體驗很nice(比直接navicat好多了),當然也可以自己寫……

項目地址:https://github.com/jonseg/crud-admin-generator

項目的強大之處在于,所有表都幫你生成菜單,然后這些表的CRUD就直接用了。

具體操作見官方說明,就不贅述了。

以上這篇nginx ip黑名單動態封禁的例子就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

標簽:德宏 上海 福州 安康 樂山 泰安 鷹潭 淮安

巨人網絡通訊聲明:本文標題《nginx ip黑名單動態封禁的例子》,本文關鍵詞  nginx,黑名單,動態,封禁,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《nginx ip黑名單動態封禁的例子》相關的同類信息!
  • 本頁收集關于nginx ip黑名單動態封禁的例子的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲欧洲精品成人久久奇米网| 4438x亚洲最大成人网| 国产传媒欧美日韩成人| 在线观看不卡一区| 国产精品免费视频一区| 欧美aaaaaa午夜精品| 在线免费一区三区| 中文字幕在线不卡一区 | 国产激情视频一区二区在线观看 | 91免费国产在线观看| 欧美变态tickling挠脚心| 亚洲福利视频三区| 欧美色男人天堂| 午夜精品久久久久久久久久久| 欧美亚洲日本一区| 日韩国产高清在线| 日韩区在线观看| 国产裸体歌舞团一区二区| 久久精品免视看| 东方欧美亚洲色图在线| 国产精品无人区| 制服丝袜在线91| 国产电影精品久久禁18| 亚洲色图一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久先锋资源网| av在线一区二区| 亚洲第一综合色| 日韩午夜激情免费电影| 久久理论电影网| 精品一区二区三区在线播放| 欧美精品v日韩精品v韩国精品v| 日韩女优av电影| 91精品欧美久久久久久动漫 | 亚洲丰满少妇videoshd| 制服丝袜av成人在线看| 悠悠色在线精品| 欧美电影免费观看高清完整版在线观看| 亚洲欧美日韩系列| 精品国产乱码久久久久久免费| 99re6这里只有精品视频在线观看| 偷窥少妇高潮呻吟av久久免费| 久久久久久免费| 日韩三级av在线播放| 欧美三区在线视频| 色综合中文综合网| 久久欧美中文字幕| 欧美一卡二卡三卡| 91麻豆精品国产自产在线 | 欧美日韩国产另类一区| 色综合中文字幕国产 | 成人黄色在线看| 色噜噜夜夜夜综合网| 91久久精品一区二区三区| 在线一区二区三区四区| 日本精品免费观看高清观看| 欧美性极品少妇| 精品理论电影在线| 国产精品免费丝袜| 亚洲一二三四在线观看| 美女诱惑一区二区| 99国内精品久久| 4438成人网| 中文字幕精品在线不卡| 午夜视频在线观看一区二区| 久久精品国产亚洲aⅴ| 91久久精品一区二区三| 国产丝袜在线精品| 日本不卡一区二区三区| 国产 欧美在线| 欧美精品乱码久久久久久按摩| 久久一区二区三区国产精品| 一区二区三区在线观看欧美| 免费亚洲电影在线| 欧美视频在线观看一区二区| 中文字幕一区二区三区四区| 另类小说欧美激情| 欧美一区二区三区公司| 亚洲在线观看免费视频| av毛片久久久久**hd| 国产精品久久久久一区二区三区 | 成人小视频免费在线观看| 日韩精品一区二区三区三区免费| 亚洲综合一区在线| 波波电影院一区二区三区| 3d成人h动漫网站入口| 亚洲国产精品久久艾草纯爱| 色老汉av一区二区三区| 国产精品久久久久毛片软件| 成人美女在线观看| 中文字幕亚洲一区二区av在线| 伦理电影国产精品| 精品日产卡一卡二卡麻豆| 青青草原综合久久大伊人精品优势| 欧美一区永久视频免费观看| 亚洲影视在线播放| 欧美zozo另类异族| 成人av在线网| 亚洲欧美偷拍三级| 欧美丰满少妇xxxxx高潮对白| 美脚の诱脚舐め脚责91| 亚洲免费观看高清完整| 日韩无一区二区| 欧美视频一区二区三区在线观看| 日本不卡视频在线| 亚洲黄色录像片| 国产精品国产自产拍在线| 日韩一区二区免费视频| 91搞黄在线观看| youjizz国产精品| 国产伦理精品不卡| 日本不卡的三区四区五区| 一区二区三区资源| 国产精品美女久久久久av爽李琼| 久久综合丝袜日本网| 91精品婷婷国产综合久久| 91女厕偷拍女厕偷拍高清| av欧美精品.com| 9久草视频在线视频精品| 国产综合色在线视频区| 久久精品国产99国产| 日韩一区欧美二区| 亚洲综合一区二区| 亚洲精选视频在线| 一区二区三区免费观看| 亚洲成人激情av| 亚洲 欧美综合在线网络| 精品久久久久久久一区二区蜜臀| 在线不卡中文字幕| 日韩免费高清电影| 日韩欧美综合一区| 中文乱码免费一区二区| 1区2区3区精品视频| 一区二区三区欧美日韩| 日韩极品在线观看| 成人教育av在线| 日韩一区二区三区电影| 国产精品久久久久久福利一牛影视 | 久久99国产精品麻豆| 成人免费黄色在线| 欧美一卡二卡在线观看| 国产精品久久免费看| 午夜欧美电影在线观看| 成人aaaa免费全部观看| 日韩一区二区三区观看| 亚洲综合偷拍欧美一区色| 国产精品亚洲第一| 制服丝袜在线91| 亚洲永久精品大片| 国产高清在线精品| 日韩精品一区二| 日韩不卡手机在线v区| 在线欧美日韩精品| 国产精品免费视频网站| 国精产品一区一区三区mba桃花| 久久精品人人做人人综合 | 日韩高清在线电影| 精品人在线二区三区| 国产一区二区精品久久91| 亚洲国产美女搞黄色| 91麻豆免费观看| 99久久久无码国产精品| 麻豆成人久久精品二区三区红| 最新欧美精品一区二区三区| 久久精品一二三| 福利一区在线观看| 51精品国自产在线| 香蕉影视欧美成人| 7878成人国产在线观看| 夜夜亚洲天天久久| 欧美日本一区二区三区| 亚洲国产欧美一区二区三区丁香婷| 国产在线不卡一卡二卡三卡四卡| 91精品国产综合久久精品app| 久久成人免费电影| 国产亚洲欧美日韩俺去了| 成人免费毛片app| 亚洲久本草在线中文字幕| 久久99久久99精品免视看婷婷| 欧美调教femdomvk| 首页国产欧美久久| 精品国产免费人成电影在线观看四季 | 欧美另类久久久品| 日韩精品一级中文字幕精品视频免费观看| 91精品福利视频| 国产麻豆一精品一av一免费| 日韩欧美的一区| 精品婷婷伊人一区三区三| 国产精品自拍毛片| 日本91福利区| 亚洲成人精品影院| 亚洲桃色在线一区| 国产精品三级电影| 国产亚洲综合av| 久久网站最新地址| 欧美tk—视频vk| 久久精品亚洲一区二区三区浴池| 精品粉嫩超白一线天av| 欧美一级xxx|