ngx_hash.{c|h}实现了nginx里面比较重要的一个hash结构,这个在模块配置解析里经常被用到。该hash结构是只读的,仅在初始创建时可以给出保存在其中的key-val对儿,然后就只能进行“增删改查”操作了。
转载 2022-04-23 16:58:51
8549阅读
ngx_hash.{c|h}实现了nginx里面比较重要的一个hash结构,这个在模块配置解析里经常被用到。该hash结构是只读的,仅在初始创建时可以给出保存在其中的key-val对儿,然后就只能进行“增删改查”操作了。先来看一下hash结构的内存布局:typedef struct { ngx_hash_t *hash; //指
转载 2012-03-15 16:43:00
29阅读
2评论
ngx_hash.{c|h}实现了nginx里面比较重要的一个hash结构,这个在模块配置解析里经常被用到。该hash结构是只读的,仅在初始创建时可以给出保存在其中的key-val对儿,然后就只能进行“增删改查”操作了。先来看一下hash结构的内存布局:[cpp] view plain copy print?typedef
转载 2021-07-06 15:22:37
114阅读
nginx的upstream模块可以定义后端负载集群,负载的分配方式也有好几种,比如 ip_hash,RR,weight,url_hash,fair等。如果后端集群session不共享的话,ip_hash,RR,weight,fair等负载均衡方式都将不适用,唯一可用的就是url_hash了。要用url_hash需要安装第三方模块ngx_http_upstream_hash_module
转载 精选 2013-07-04 11:05:27
1693阅读
        ngx_lua出来很长时间了,但一直没有关注过,最近有一个I/O密集型的项目,用PHP性能严重不足,但是通过C开发扩展成本很大,对需求也不能及时响应,结果尝试了一下lua,结果非常喜人,他的同步非阻塞I/O,协同程序等等,让他的性能无与伦比!     &
原创 精选 2014-09-30 11:35:43
3504阅读
1点赞
3.7 发送响应请求处理完毕后,需要向用户发送HTTP响应,告知客户端Nginx的执行结果。HTTP响应主要包括响应行、响应头部、包体三部分。发送HTTP响应时需要执行发送HTTP头部(发送HTTP头部时也会发送响应行)和发送HTTP包体两步操作。本节将以发送经典的“Hello World”为例来说明如何发送响应。3.7.1 发送HTTP头部下面看一下HTTP框架提供的发送HTTP头部的方法,如下
[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...
lua
原创 2023-04-11 00:21:58
88阅读
 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等异步操作完成时还原相关协程上
转载 10月前
37阅读
大家看到在构建一个ngx_hash_wildcard_t的时候,需要对通配符的哪些key进行预处理。这个处理起来比较麻烦。而当有一组key,这些里面既有无通配符的key,也有包含通配符的key的时候。我们就需要构建三个hash表,一个包含普通的key的hash表,一个包含前向通配符的hash表,一个包含后向通配符的hash
转载 2021-07-06 14:44:17
301阅读
大家看到在构建一个ngx_hash_wildcard_t的时候,需要对通配符的哪些key进行预处理。这个处理起来比较麻烦
转载 2022-04-11 10:52:15
153阅读
在 Nginx 中,ngx_hash_t 是一种基本的数据结构,用于高效地进行键值对的查找操作。它采用了哈希表的数据结构,提供了快速的查找性能,适用于需要频繁进行查找操作的场景。ngx_hash_t 的定义在 Nginx 的源代码中,ngx_hash_t 的定义如下:typedef struct { ngx_uint_t hsize;
原创 精选 2024-03-21 20:17:20
348阅读
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
816阅读
通过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
279阅读
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
165阅读
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
504阅读
  • 1
  • 2
  • 3
  • 4
  • 5