nginx+lua实现灰度发布/waf防火墙

nginx+lua 实现灰度发布 waf防火墙

课程链接:【课程】Nginx 与 Lua 实现灰度发布与 WAF 防火墙(完)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

参考博客

Nginx基础 - Nginx+Lua实现灰度发布与WAF - 暗香流行风缥缈 - 博客园

Nginx+Lua实现WAF引用防火墙_李在奋斗的博客-CSDN博客

1-nginx加载lua环境

安装luajit解释器

重新编译nginx #或者选择openrestry

luajit 环境

模块:ngx_devel_kit 和lua-nginx-module

#安装lua
yum install lua

#下载最新luajit和编译安装nginx模块ngx_devel_kit 和lua-nginx-module
#给luajit库加上软连接

#加载lua的lib库到/etc/ld.so.conf

#$?判断编译安装是否成功

nginx配置文件

注意location里写的

default_type text/html;

content_by_lua_block{

}

在这里插入图片描述

部署春哥的开源项目openresty

简单

在这里插入图片描述

灰度发布架构

在这里插入图片描述

3台服务器

①nginx+lua+memcache

②java-生产

③java-测试

在这里插入图片描述

lua语法

在这里插入图片描述

lua功能

在这里插入图片描述

lua注释语法

数字0和空字符串 = true
布尔类型只有nil和false

脚本以.lua结尾

~=是不对等于
字符串拼接  .. 为+
io对象可以根据用户输入读取,输入,类似read

灰度发布

在这里插入图片描述

在这里插入图片描述

部署tomcat,java环境

创建jsp文件,当访问tomcat时返回html页面。

(11 封私信 / 67 条消息) 什么是JSP技术? - 知乎

在这里插入图片描述

配置memcached

除了安装memcache,还需要配置memcached支持lua

在这里插入图片描述

配置负载均衡到tomcat-test/prod

nginx配置include conf.d/*.conf;

配置在nginx/conf.d/lua.conf中

#必须在http层
lua_package_path "/etc/nginx/lua/memcached.lua";
upstream java_prod {
server 192.168.56.12:8080;
}
upstream java_test {
server 192.168.56.13:9090;
}
server {
listen 80;
server_name 47.104.250.169;
location /hello {
default_type 'text/plain';
content_by_lua 'ngx.say("hello ,lua scripts")';
}
location /myip {
default_type 'text/plain';
content_by_lua '
clientIP = ngx.req.get_headers()["x_forwarded_for"]
ngx.say("Forwarded_IP:",clientIP)
if clientIP == nli then
clientIP = ngx.var.remote_addr
ngx.say("Remote_IP:",clientIP)
end
';
}
location / {
default_type 'text/plain';
content_by_lua_file /etc/nginx/lua/dep.lua;
}
location @java_prod {
proxy_pass http://java_prod;
include proxy_params;
}
location @java_test {
 proxy_pass http://java_test;
include proxy_params;
}
}

#这是在/etc/nginx/目录下
//nginx反向代理理tomcat,必须配置头部信息否则返回400错误  
[root@nginx-lua conf.d]# cat ../proxy_params
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;

#编写nginx调用灰度发布lua脚本

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

往memcache写入ip

在这里插入图片描述

在这里插入图片描述

nginx+lua实现waf 应用防火墙

在这里插入图片描述

防护代码

在这里插入图片描述

攻击手段

在这里插入图片描述

在这里插入图片描述

解决办法

在这里插入图片描述

安装lnmp

创建一张info表写入账户密码信息,测试

网站登陆页面

在这里插入图片描述

提交表单时,php连接数据库

在这里插入图片描述

sql登陆注入

” 空格 or 1=1 #

号把后面注释掉,1=1为true,or条件判断为真

在这里插入图片描述

lua解决的安全问题

在这里插入图片描述

部署waf防护代码

在这里插入图片描述

如果服务器没有git命令,使用yum安装

git clone==下载代码

配置config.lua 中的waf规则目录

在这里插入图片描述

修改规则目录下post文件

在这里插入图片描述

html=就是阻止访问后的访问页面

cc貌似是针对域名,ddos是针对ip

ccrate=100/60 #一个域名,60秒最多访问100次,超过将封掉

在这里插入图片描述

在这里插入图片描述

微信:jinmuqq222
原文地址:https://www.cnblogs.com/jinmuqq222/p/13605211.html