目錄html
簡介:利用OpenResty+unixhot自建WAF系統nginx
OpenResty是一個基於 Nginx 與 Lua 的高性能 Web 平臺,其內部集成了大量精良的 Lua 庫、第三方模塊以及大多數的依賴項。用於方便地搭建可以處理超高併發、擴展性極高的動態 Web 應用、Web 服務和動態網關。
OpenResty經過匯聚各類設計精良的 Nginx 模塊(主要由 OpenResty 團隊自主開發),從而將 Nginx 有效地變成一個強大的通用 Web 應用平臺。這樣,Web 開發人員和系統工程師能夠使用 Lua 腳本語言調動 Nginx 支持的各類 C 以及 Lua 模塊,快速構造出足以勝任 10K 乃至 1000K 以上單機併發鏈接的高性能 Web 應用系統。
OpenResty的目標是讓你的Web服務直接跑在 Nginx 服務內部,充分利用 Nginx 的非阻塞 I/O 模型,不單單對 HTTP 客戶端請求,甚至於對遠程後端諸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都進行一致的高性能響應。git
以CentOS7.5爲例
1.安裝命令以下github
yum install yum-utils -y yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo yum install openresty-resty -y yum --disablerepo="*" --enablerepo="openresty" list available #列出全部 openresty 倉庫裏的軟件包
安裝完成以下圖所示
2.查看openresty所在目錄web
whereis openresty
cd /usr/local/openresty/nginx/conf ls mv nginx.conf nginx.conf.$(date +%Y%m%d) #將nginx.conf移入nginx.conf.$(date +%Y%m%d)
vim nginx.conf #此時爲新建 nginx.conf
將如下內容複製到nginx.conf中並保存vim
worker_processes 1; error_log logs/error.log; events { worker_connections 1024; } http { server { listen 8080; location / { default_type text/html; content_by_lua ' ngx.say("<p>hello, world</p>") '; } } }
添加環境變量後端
echo "export PATH=$PATH:/usr/local/openresty/nginx/sbin" >> /etc/profile source /etc/profile
啓動Openrestycentos
nginx -c /usr/local/openresty/nginx/conf/nginx.conf
查看服務併發
ps -ef | grep nginx
訪問web服務驗證是否正常curl
curl http://localhost:8080/
重啓web服務
nginx -s reload
unixhot下載,若是沒有git,先安裝一下
yum -y install git git clone https://github.com/unixhot/waf.git
將WAF配置文件夾複製到nginx的配置下
cp -a ~/waf/waf /usr/local/openresty/nginx/conf/
修改nginx.conf配置,加入以下代碼並保存
#WAF lua_shared_dict limit 10m; lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua"; init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua"; access_by_lua_file "/usr/local/openresty/nginx/conf/waf/access.lua";
到目前爲止,修改過的nginx.conf文件以下圖所示:
測試配置
/usr/local/openresty/nginx/sbin/nginx -t
從新加載配置
/usr/local/openresty/nginx/sbin/nginx -s reload
模擬SQL注入