博客新站规划之(nginx+lua+ngx_lua_waf实现waf功能)

安装基础编译环境
yum install pcre-devel openssl-devel gd-devel geoip-devel gcc wget -y

下载安装所需组件

下载解压安装luajit 2.0.5(解压后直接make 然后make install)
wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz

make  
make install

下载解压ngx_devel_kit
wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.1.tar.gz

下载解压lua-nginx-module(nginx的lua模块)
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.15.tar.gz

下载解压nginx
wget https://nginx.org/download/nginx-1.16.1.tar.gz

下载解压waf功能(ngx_lua_waf)
#这个版本是比较老的版本,这里用了下面的一个版本
#wget https://github.com/loveshell/ngx_lua_waf/archive/v0.7.2.tar.gz   
wget https://github.com/whsir/ngx_lua_waf/archive/v1.0.3.tar.gz

下载用于支持流媒体的组件
wget https://github.com/winshining/nginx-http-flv-module/archive/v1.2.7.tar.gz

编译安装nginx
进入nginx源码文件夹(编译安装nginx)

./configure \
--prefix=/web-boke/nginx \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_image_filter_module=dynamic \
--with-http_geoip_module=dynamic \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-pcre \
--with-pcre-jit \
--with-stream=dynamic \
--with-stream_ssl_module \
--with-debug \
--add-dynamic-module=/root/nginx-http-flv-module-1.2.7 \
--add-module=/root/ngx_devel_kit-0.3.1 \
--add-module=/root/lua-nginx-module-0.10.15 \
--with-ld-opt="-Wl,-rpath,$LUAJIT_LIB" ;

make
make install

调试nginx实现waf

第一:将waf功能模块,解压后重命名为waf(并移动到nginx的配置目录下)
mv ngx_lua_waf-1.0.3/ /web-boke/nginx/conf/waf

第二:修改nginx的配置文件使其加载waf功能模块,并加载博客的nginx配置文件
vim /web-boke/nginx/conf/nginx.conf

#在http里面添加如下
    lua_package_path "/web-boke/nginx/conf/waf/?.lua";
    lua_shared_dict limit 10m;
    init_by_lua_file  /web-boke/nginx/conf/waf/init.lua; 
    access_by_lua_file /web-boke/nginx/conf/waf/waf.lua;

    include /web-boke/nginx-boke/boke-ssl.conf;

第三:修改waf模块的规则配置路径

vim /web-boke/nginx/conf/waf/config.lua

RulePath = "/web-boke/nginx/conf/waf/wafconf/"

第四:导出环境变量(重要)
 export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH  

第五:启动nginx
/web-boke/nginx/sbin/nginx -t   #测试nginx的配置文件是否正确
/web-boke/nginx/sbin/nginx -V   #查看nginx编译了那些模块
/web-boke/nginx/sbin/nginx -s reload    #当waf规则更改后,需要reload一下nginx
/web-boke/nginx/sbin/nginx  #启动nginx

调试测试waf以及waf模块具体使用见此文章
https://github.com/loveshell/ngx_lua_waf

声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/334.html

最后编辑于:2020/1/14作者: 辣条①号

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注