個人學習筆記,謝絕**!!!
原文:ngx_lua_waf 是乙個基於 ngx_lua 的 開源的web 應用防火牆,使用簡單,高效能和輕量級。
1、安裝luajit2.0
luajit是採用c語言寫的lua**的直譯器, 這裡推薦使用lujit2.1做lua支援
# wget
# tar xf luajit-2.0.5.tar.gz
# cd luajit-2.0.5
# make && make install
ngx_lua如果是0.9.2以上版本,建議正則過濾函式改為ngx.re.find,匹配效率會提高三倍左右。
2、安裝ngx_devel_kit
ndk(nginx development kit)模組是乙個拓展nginx伺服器核心功能的模組,第三方模組開發可以基於它來快速實現
# wget
# tar xf v0.3.0.tar.gz
3、安裝nginx_lua_module# wget
# tar xf v0.10.13.tar.gz
4、環境變數# export luajit_lib=/usr/local/lib
# export luajit_inc=/usr/local/include/luajit-2.0
5、編譯安裝nginx# ./configure \
...略... \
--add-module=/dist/ngx_devel_kit-0.3.0 \
--add-module=/dist/lua-nginx-module-0.10.13 \
--with-ld-opt="-wl,-rpath,$luajit_lib"
如果報錯: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: no such file or directory
解決方法:ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
# wget
# unzip master.zip
# mv ngx_lua_waf-master /usr/local/nginx/conf/waf
7、nginx.conf http欄位裡新增配置:lua_package_path "/usr/local/nginx/conf/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file /usr/local/nginx/conf/waf/init.lua;
access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;
8、配置詳解:
/usr/local/nginx/conf/waf/config.lua
rulepath = "/usr/local/nginx/conf/waf/wafconf/"
--規則存放目錄
attacklog = "off"
--是否開啟攻擊資訊記錄,需要配置logdir
logdir = "/usr/local/nginx/logs/hack/"
--log儲存目錄,該目錄需要使用者自己新建,切需要nginx使用者的可寫許可權
urldeny="on"
--是否攔截url訪問
redirect="on"
--是否攔截後重定向
cookiematch = "on"
--是否攔截cookie攻擊
postmatch = "on"
--是否攔截post攻擊
whitemodule = "on"
--是否開啟url白名單
black_fileext=
--填寫不允許上傳檔案字尾型別
ipwhitelist=
--ip白名單,多個ip用逗號分隔
ipblocklist=
--ip黑名單,多個ip用逗號分隔
ccdeny="on"
--是否開啟攔截cc攻擊(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
ccrate = "100/60"
--設定cc攻擊頻率,單位為秒.
--預設1分鐘同乙個ip只能請求同乙個位址100次
html=[[please go away~~]]
--警告內容,可在中括號內自定義
備註:不要亂動雙引號,區分大小寫
過濾規則在wafconf下,可根據需求自行調整,每條規則需換行,或者用|分割:
預設開啟了get和post過濾,需要開啟cookie過濾的,編輯waf.lua取消部分--注釋即可
參考
配置Nginx支援php
nginx.conf中配置 server error page 404 404.html redirect server error pages to the static page 50x.html error page 500 502 503 504 50x.html location 50x....
配置nginx支援Https
配置nginx支援https一定要先使用stop停止nginx然後重新代開不能使用reload 一 安裝letsencrypt 1.從git上轉殖下來 git clone 2.切換到letsencrypt中 cd letsencrypt 執行以下的命令 a c certbot auto certon...
配置nginx支援pathinfo功能
nginx模式不支援pathinfo模式,類似info.php hello形式的url會被提示找不到頁面。下面的通過正則找出實際檔案路徑和pathinfo部分的方法,讓nginx支援pathinfo。location php fastcgi param script filename documen...