科普文章:了解ngx_stream_redis_module
## 什么是ngx_stream_redis_module?
ngx_stream_redis_module是Nginx的一个模块,用于处理Redis协议。它允许我们在Nginx中通过TCP连接与Redis服务器进行通信,并在流式的方式下处理Redis协议的请求和响应。
## 为什么要使用ngx_stream_redis_modu
原创
2024-01-26 16:35:01
29阅读
Reids 客户端Redis是近几年业内非常流行的内存KV存储系统,以速度快和丰富的数据类型而闻名,可以用在缓存、消息队列、数据库等领域,许多国内外知名公司都是它的用户。OpenResty发行包内置了lua-resty-redis库,它基于cosocket实现了非阻塞的Redis客户端,支持Redis的所有命令以及管道操作。lua-resty-redis库需要显式加载后才能使用,即:local r
集群分布式实现集群实现方式为主从方式则对外提供访问的是 集群id或者域名,而非ip:端口。因为master死掉,slave转换为master,唯一不变的是集群id或者按约定的域名。redis-分布式集群,主负责读写,从只负责读。nginx负载均衡实现-集群,实际都是主节点。 ip负载均衡实现-集群 比如redis,master提供读写,slave仅提供读。client访问不分主从,相当于负载均衡。
转载
2024-01-17 10:37:21
30阅读
# 禁用nginx中的redis2模块
在nginx中,redis2模块是一个用于与Redis数据库进行交互的模块。它允许nginx服务器通过redis存储和检索数据,从而提高性能和灵活性。然而,有时候我们需要禁用这个模块,可能是因为安全性考虑,或者是因为我们不再需要它的功能。本文将介绍如何在nginx中禁用redis2模块。
## 什么是ngx_http_redis2_module?
ng
原创
2024-07-09 03:58:33
50阅读
3.7 发送响应请求处理完毕后,需要向用户发送HTTP响应,告知客户端Nginx的执行结果。HTTP响应主要包括响应行、响应头部、包体三部分。发送HTTP响应时需要执行发送HTTP头部(发送HTTP头部时也会发送响应行)和发送HTTP包体两步操作。本节将以发送经典的“Hello World”为例来说明如何发送响应。3.7.1 发送HTTP头部下面看一下HTTP框架提供的发送HTTP头部的方法,如下
转载
2024-03-27 09:12:21
73阅读
ngx_lua模块的原理:1、每个worker(工作进程)创建一个Lua VM,worker内所有协程共享VM;2、将Nginx I/O原语封装后注入 Lua VM,允许Lua代码直接访问;3、每个外部请求都由一个Lua协程处理,协程之间数据隔离;4、Lua代码调用I/O操作等异步接口时,会挂起当前协程(并保护上下文数据),而不阻塞worker;5、I/O等异步操作完成时还原相关协程上
[code="lua"]
local delay=3
local handle
handle = function(param1,param2)
if param1 then
return
end
ngx.log(ngx.ERR,"param is " ..param2)
ngx.timer.at(delay,handle,"he...
原创
2023-04-11 00:21:58
90阅读
nginx 内存池 ngx_pool_tnginx 是自己实现了内存池的,所以在nginx ngx_pool_t 这个结构也随处可见,这里主要分析一下内存池的分配逻辑。内存池实现了包括小块内存、大块内存和清理资源几种资源的处理,应该来说覆盖了绝大数的使用场景了。相关结构定义// 大块内存
typedef struct ngx_pool_large_s ngx_pool_large_t;
stru
转载
2024-02-12 13:57:19
18阅读
void* ngx_slab_alloc(ngx_slab_pool_t* pool, size_t size)
{
void* p;
// 进程间加锁保护
ngx_shmtx_lock(&pool->mutex);
// 申请内存块
p = ngx_slab_alloc_locked(pool, size);
// 进程间解锁
转载
2024-05-08 20:21:26
116阅读
摘要:通过lua-nginx-module中的ngx.thread同时执行多个任务。ngx_lua中访问多个第三方服务ngx_lua中提供了ngx.socket API,可以方便的访问第三方网络服务。如下面的代码,通过get_response函数从两个(或者更多)的源服务器获取数据,再生成响应发给客户端。location / { content_by_lua_block ...
原创
2023-02-21 09:21:30
822阅读
通过lua-nginx-module中的ngx.thread同时执行多个任务。 ngx_lua中访问多个第三方服务 ngx_lua中提供了ngx.socket API,可以方便的访问第三方网络服务。如下面的代码,通过get_response函数从两个(或者更多)的源服务器获取数据,再生成响应发
原创
2021-06-05 10:14:21
729阅读
1. json POST/PUT 请求,若使用 content-type application/json 则会被 naxsi 解析,payload被转换用于 whitelist / signatures writting 处理: 所有目标为 BODY 的规则,会解析 json 使用类似于 $BOD ...
转载
2021-08-19 16:12:00
283阅读
下载连接:nginx:http://nginx.org/en/download.html
http://nginx.org/download/
lua-nginx模块安装文件:https://github.com/openresty/lua-nginx-module/tags
lua-zlib模块安装文件: https://github.com/brimwor
需求背景类似于论坛型的网站经常会被黑掉,除了增加硬件防护感觉效果还是不太好,还会偶尔被黑,waf的功能正好实现了这个需求。waf的作用: 防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击
防止svn/备份之类文件泄漏
防止ApacheBench之类压力测试工具的攻击
屏蔽常见的扫描黑客工具,扫描器
屏蔽异常的网络请求
屏蔽图片附件类目录php执行权限
防止we
转载
2024-08-30 18:00:18
25阅读
1. 模块机制ngx模块大致分为:handlers: 协同完成客户端处理,产生数据。filters : 对handlers产生的数据进行各种过滤处理(增,删,改)。upstream : 如果存在真实后端服务器,ngx可用upstream模块充当反向代理。load-balance : 当ngx当代理服务器时,后端服务器可能不止一个,用于负载均衡。ngx模块定义如下:type值的不同ctx类型当typ
转载
2024-07-12 05:04:02
59阅读
https://github.com/rryqszq4/ngx_php
转载
2018-01-18 09:22:00
42阅读
2评论
1. 通用规则 查找 字符串 0x, 在 POST/PUT参数,URL任何部分,GET任何参数,或HTTP header 名称为 Cookie的header。如果匹配, $SQL 得分加2,规则可以 使用 id1002 设置白名单 MainRule "str:0x" "msg:0x, possibl ...
转载
2021-08-19 16:24:00
167阅读
1. 编译 cd nginx-$NGINX_VER ./configure --add-dynamic-module=../naxsi-$NAXSI_VER/naxsi_src/ make modules 2. 启动 2.1 加载规则和库 load_module /etc/nginx/modules ...
转载
2021-08-19 11:46:00
260阅读
1. wl: 白名单意义:让 naxsi 忽略 指定内容中指定模式的 请求,以避免误杀 白名单指令是 loc | main level 示例: BasicRule wl:1013 "mz:$ARGS_VAR:term|$URL:/search"; 1.2 语法 1.3 屏蔽ID wl:0 屏蔽所有规 ...
转载
2021-08-19 15:05:00
507阅读
0、手册应该是学习语言的最好的文档,一边看文档,一边想把它记录下来,lua 5.2 英文手册地址:http://www.lua.org/manual/5.2/manual.html在lua中,任何值都可以拥有元表(metatable)。元表本质是就是lua中table,但同时通过元表可以自定义在某些值上的操作。通过设置元表中特定的域(fields)值,可以改变某些值的操作行为。比如,当非数值类型的