成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

通過OpenResty實現Nginx動態拉黑IP

運維 系統運維
OpenResty® 是一個基于 Nginx 與 Lua 的高性能 Web 平臺,其內部集成了大量精良的 Lua 庫、第三方模塊以及大多數的依賴項。用于方便地搭建能夠處理超高并發、擴展性極高的動態 Web 應用、Web 服務和動態網關。

[[355881]]

 前面提到過,nginx在項目中的作用。其實還有很多高級模塊功能,例如今天我們利用OpenResty來防止一些IP惡意攻擊。

OpenResty® 是一個基于 Nginx 與 Lua 的高性能 Web 平臺,其內部集成了大量精良的 Lua 庫、第三方模塊以及大多數的依賴項。用于方便地搭建能夠處理超高并發、擴展性極高的動態 Web 應用、Web 服務和動態網關。

官方地址:http://openresty.org/cn/

環境搭建

本文使用centos 7進行操作,安裝nginx,本處安裝nginx并非是openresty前提,只是為了演示openresty安裝后,訪問地址會將nginx變成openresty

wget下載

  1. wget http://nginx.org/download/nginx-1.19.5.tar.gz 

 通過OpenResty實現nginx動態拉黑IP

 解壓并執行安裝命令

  1. tar -zxvf nginx-1.19.5.tar.gz #解壓 
  2. cd nginx-1.19.5 #進入目錄 
  3. ./configure #配置 
  4. make #編譯 
  5. make install #安裝 
  6. cd /usr/local/nginx/sbin #切換到nginx命令目錄 
  7. ./nginx #啟動nginx 

 訪問地址


安裝openresty,先下載openresty,

  1. wget https://openresty.org/download/openresty-1.19.3.1.tar.gz 
  2. (此版本最終一直無法加載一些lua腳本,最終使用openresty-1.15.8.3版本成功) 

(此版本最終一直無法加載一些lua腳本,最終使用openresty-1.15.8.3版本成功)

 解壓&安裝 

  1. tar -zxvf openresty-1.19.3.1.tar.gz 
  2. cd openresty-1.19.3.1 
  3. yum install pcre-devel openssl-devel gcc curl  
  4. ./configure 
  5. make 
  6. make install 

 執行完后,我們啟動openresty中得nginx,注意,切換到openresty安裝得路徑

  1. /usr/local/openresty/nginx/sbin 

啟動后,訪問,發現nginx變成了openresty

通過OpenResty實現nginx動態拉黑IP

配置nginx.conf

測試lua功能


通過OpenResty實現nginx動態拉黑IP

 可以看到已經可以使用lua腳本,下面我們將redis sdk引用進來

通過OpenResty實現nginx動態拉黑IP

 配置請求路徑訪問lua腳本(本處只是做一個demo,如果對所有路徑進行訪問限制,可以攔截/,然后lua驗證通過后,進行請求轉發)

通過OpenResty實現nginx動態拉黑IP

lua腳本

  1. # Lua 
  2. local function close_redis(redcli) 
  3.     if not redcli then 
  4.         return 
  5.     end 
  6.     --釋放連接(連接池實現) 
  7.     local pool_max_idle_time = 10000 --毫秒 
  8.     local pool_size = 100 --連接池大小 
  9.     local ok, err = redcli:set_keepalive(pool_max_idle_time, pool_size) 
  10.  
  11.     if not ok then 
  12.         ngx_log(ngx_ERR, "set redis keepalive error : ", err) 
  13.     end 
  14. end 
  15.  
  16. -- 連接redis 
  17. local redis = require('resty.redis'
  18. local redcli = redis.new() 
  19. redcli:set_timeout(1000) 
  20.  
  21. local ip = "127.0.0.1"  ---修改變量 
  22. local port = "6379" ---修改變量 
  23. local ok, err = redcli:connect(ip,port) 
  24. if not ok then 
  25.     return close_redis(redcli) 
  26. end 
  27.  
  28. local clientIP = ngx.var.remote_addr 
  29.  
  30. -- increKey為請求頻率,blackKey黑名單key 
  31. local incrKey = "user:"..clientIP..":request:frequency" 
  32. local blackKey = "user:"..clientIP..":black:list" 
  33.  
  34. local is_black,err = redcli:get(blackKey) 
  35.  
  36. if tonumber(is_black) == 1 then 
  37.     ngx.exit(403) 
  38.     close_redis(redcli) 
  39. end 
  40.  
  41. inc  = redcli:incr(incrKey) 
  42.  
  43. ngx.say(inc) 
  44.  
  45. if inc < 2 then 
  46.    inc = redcli:expire(incrKey,1) 
  47. end 
  48.  
  49. if inc > 2 then --每秒2次以上訪問即視為非法,會阻止30s的訪問 
  50.     redcli:set(blackKey,1) 
  51.     redcli:expire(blackKey,30) 
  52. end 
  53.  
  54. close_redis(redcli) 

 啟動nginx后,請求一直報錯 


  1. 2020/12/01 19:13:53 [error] 2101#0: *2 lua entry thread aborted: runtime error: /usr/local/openresty/nginx/lua/access_by_redis.lua:29: attempt to call field 'get_headers' (a nil value) 
  2. stack traceback: 
  3. coroutine 0: 
  4.         /usr/local/openresty/nginx/lua/access_by_redis.lua: in main chunk, client: 192.168.49.1, server: localhost, request: "GET /test1 HTTP/1.1", host: "192.168.49.131" 

 這個問題困擾了我很久(凡是不要一上來就最新版本,吐血說明)

windows版本的openresty并沒有出現此問題,liunux一直都有問題,最終降低了openresty版本,實驗成功,openresty-1.15.8.3版本

正常請求

通過OpenResty實現nginx動態拉黑IP

異常請求


最后openresty的運行周期圖如下,可以從整體上了解openresty


 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-05-10 10:50:53

NginxIPLinux

2019-09-18 10:39:08

負載均衡反向代理TCP

2015-04-29 16:34:38

博科/網絡轉型

2009-01-03 14:54:40

ibmdwXML

2009-12-30 10:19:42

2023-10-13 18:15:06

2011-02-22 09:04:57

DebianBonding雙網卡單IP

2016-08-23 14:37:21

2022-02-15 14:22:46

灰度發布互聯網業務

2019-09-24 08:44:09

OpenrestyAPI網關

2009-08-03 14:14:27

2016-11-28 09:19:27

2021-07-31 11:40:55

Openresty開源

2016-02-15 15:17:56

2024-09-23 21:00:57

C#反射

2021-06-16 07:05:02

gRPC 網關HTTP

2021-07-13 22:39:46

比特幣加密貨幣勒索軟件

2019-12-04 16:10:43

微信拉黑

2022-02-18 08:28:49

域名公網IP

2022-10-10 08:17:50

JavaIP地址
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操夜夜操 | 免费视频中文字幕 | 无码国模国产在线观看 | 日韩一区三区 | 亚洲精品成人在线 | 欧美欧美欧美 | av网站在线播放 | 欧美精品在线播放 | 国产精品精品视频一区二区三区 | 黄色av网站在线观看 | 国产一级特黄真人毛片 | www.色五月.com | 亚洲欧美国产一区二区三区 | 99视频 | 国产精品视频二区三区 | 99精品亚洲国产精品久久不卡 | 久久夜视频 | 国产精品美女久久久 | 一区二区视频在线观看 | 国产精品不卡 | 欧美一级片久久 | 一级片在线观看 | 国产精品欧美一区喷水 | 中文字幕视频在线 | 中文字幕亚洲欧美 | 日本aa毛片a级毛片免费观看 | 欧美久久一级特黄毛片 | 伦理二区 | 午夜免费观看 | 亚洲狠狠丁香婷婷综合久久久 | 国产色 | 国产免费一区二区三区免费视频 | 激情小说综合网 | 中文字幕亚洲视频 | 欧美区日韩区 | 国产精品久久久久久久久久软件 | 91av免费观看 | 日日夜夜精品 | 国产a视频| 成年人在线视频 | 国产成人精品免高潮在线观看 |