首页 > 系统相关 >Nginx+Lua实现自定义WAF(一)

Nginx+Lua实现自定义WAF(一)

时间:2023-07-16 21:45:13浏览次数:42  
标签:自定义 nginx -- waf Nginx usr openresty WAF root

安装环境:centOS7 1810 

Step1:安装编译所依赖的软件

pcre-devel: 扩展的正则表达式引擎,为了使Nginx处理更复杂的正则表达式机制 openssl-devel:–with-http_ssl_module使用该模块必需装openssl库,来实现http支持https协议 zlib-devel:zlib库是网络通信压缩库,ngx_http_gzip_module(gzip压缩模块)所必需的 readline-devel:readline是安装Openresty所必须的依赖包
[root@waf ~]#  yum install gcc-c++ libtool gmake make -y

[root@waf ~]# yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel readline readline-devel-y

Step2:创建nginx用户/组

Nginx的Master主进程以root用户身份运行,而worker子进程我们指定它为nginx用户运行
[root@waf ~]# groupadd nginx
[root@waf ~]# useradd -d /home/nginx -g nginx -s /sbin/nginx nginx

step3:编译安装Openresty

[root@waf ~]# wget https://openresty.org/download/openresty-1.17.8.2.tar.gz

[root@waf ~]# tar zxvf openresty-1.17.8.2.tar.gz 

[root@waf ~]# cd openresty-1.17.8.2

[root@waf openresty-1.17.8.2]# ./configure --prefix=/usr/local/openresty \
 --sbin-path=/usr/local/openresty/nginx/sbin/nginx \
 --conf-path=/usr/local/openresty/nginx/conf/nginx.conf \
 --pid-path=/usr/local/openresty/nginx/run/nginx.pid \
--error-log-path=/usr/local/openresty/nginx/logs/error.log \
 --http-log-path=/usr/local/openresty/nginx/logs/access.log \
 --user=nginx \
 --group=nginx \
 --with-pcre \
--with-stream \
 --with-threads \
 --with-file-aio \
--with-http_v2_module \
 --with-http_ssl_module \
 --with-http_realip_module \
 --with-http_gzip_static_module \
 --with-http_stub_status_module
[root@waf openresty-1.17.8.2]# gmake
[root@waf openresty-1.17.8.2]# gmake install

step4:为Openresty添加环境变量

[root@waf ~]# vim /etc/profile.d/openresty.sh

export PATH=/usr/local/openresty/bin:$PATH

[root@waf ~]# source /etc/profile

Step5:下载WAF模块

[root@waf openresty-1.17.8.2]# git clone https://github.com/unixhot/waf.git

[root@waf openresty-1.17.8.2]# git clone https://github.com/openresty/lua-resty-core.git

[root@waf openresty-1.17.8.2]#     cp -a ./waf/waf /usr/local/openresty/nginx/conf/

[root@waf openresty-1.17.8.2]#    cp -a lua-resty-core /usr/local/openresty/nginx/conf/

Step6:Openresty引入WAF模块

[root@waf openresty-1.17.8.2]# vim /usr/local/openresty/nginx/conf/nginx.conf

在http下添加如下Lua路径
http {
lua_shared_dict limit 10m;
lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua;/usr/local/openresty/lua-resty-core/lib/?.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";

 

Step7:启动服务

[root@waf openresty-1.17.8.2]# openresty
[root@waf openresty-1.17.8.2]# openresty -s reload

标签:自定义,nginx,--,waf,Nginx,usr,openresty,WAF,root
From: https://www.cnblogs.com/networking/p/17558614.html

相关文章

  • ThreadPoolTaskExecutor自定义线程池的配置和使用
    ThreadPoolTaskExecutor自定义线程池的配置和使用线程池ThreadPoolTaskExecutor和ThreadPoolExecutor的区别ThreadPoolExecutor,这个类是JDK中的线程池类,继承自Executor,里面有一个execute()方法,用来执行线程,线程池主要提供一个线程队列,队列中保存着所有等待状态的线程,避免了创......
  • windows安装nginx
    windows安装nginx安装环境操作系统:windows11。nginx版本:1.20.2。这只是我的安装环境,你安装的时候,如果你的操作系统版本和我的不一样,应该也不影响,但是希望安装的nginx版本最好和我的一样,我相信你按照我的教程步骤来安装一定会安装成功的。nginx下载百度网盘下载:https://......
  • 自定义java@注解
    自定义注解主要用于抽象出重复代码,以减少枯燥无味的重复工作量举例:创建Redis分布式锁注解步骤:新建interface接口@Target(ElementType.METHOD)//描述注解使用范围@Retention(RetentionPolicy.RUNTIME)//设置注解时间范围//SOURCE源文件保留//CLASS,......
  • 服务器笔记之nginx安装SSL证书
    服务器笔记之安装SSL证书参考腾讯云服务器官方文档进行配置SSL证书Nginx服务器SSL证书安装部署-证书安装-文档中心-腾讯云(tencent.com)【一】前提条件已经注册并备案过的域名已获取证书【二】下载证书SSL证书Nginx服务器SSL证书安装部署-证书安装-文......
  • Nginx代码导入CLion
    安装mingw64C/C++编译器GCC的Windows版本https://sourceforge.net/projects/mingw/从官网下载后勾选勾选全部后关闭窗口时选择reviewchanges设置环境变量通过命令gcc-v检验是否设置成功。打开代码后,打开某个c文件,选择CreateCMakeLists.txt直接点击OK......
  • SpringBoot中通过自定义Jackson注解实现接口返回数据脱敏
    场景SpringBoot中整合ShardingSphere实现数据加解密/数据脱敏/数据库密文,查询明文:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131742091上面讲的是数据库中存储密文,查询时使用明文的脱敏方式,如果是需要数据库中存储明文,而在查询时返回处理后的数据,比如身份......
  • 开发自己的Prometheus Exporter、实现自定义指标
    PrometheusExporter基础知识PrometheusExporter的概念、工作原理 PrometheusExporter是一个用来收集和暴露指标数据的工具,通过与Prometheus监控系统一起使用。它的结构包括两个组件:Collector和Exporter:Collector:用于从目标应用程序或系统收集指标并将其转化为Prometheus......
  • Winform自定义控件之复合控件
    winform提供了很多控件供使用,如label;text;button;panel;checkbox等,在一些场景下,这些控件不能很好的满足使用或适应场景,就需要我们进行自定义控件。自定义控件有三种形式:1.组合控件:将vs提供的控件自定义组合打包成一个新的控件就叫做组合控件。可避免一些重复工作代码,这个很好理......
  • Java扩展Nginx之六:两大filter
    欢迎访问我的GitHub这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos本篇概览本文是《Java扩展Nginx》系列的第六篇,前文的五大handler形成了nginx-clojure开发的基本框架,初步评估已经可以支撑简单的需求开发了,但nginx-clojure并未止步于han......
  • Nginx arm编译安装
    Nginxarm编译安装背景计划编译一套产品.能够比较方便快捷的进行nginx的交付.主要思想是源码编译不仅能够在arm上面运行也可以在x86上面编译考虑性能还有一些扩展性.高效处理.主要涉及的点有:openssl最新的1.1.1的的版本zlib进行压缩,解压缩的处理.pcre正......