随笔分类 -  ngx

《ngx底层设计和源码分析》—— 限流模块
摘要:1. 限流算法 ngx_http_limit_req_module 使用桶算法, 定义一个桶,桶的出口流速固定,入口流速大于出口时,请求被缓存在桶中, 定义桶的容积,当请求超过容积,则丢弃请求。 limit_req_zone : 定义一个桶,且定义桶的出口流速 limit_req : 定义使用桶,和 阅读全文

posted @ 2022-05-19 10:35 开心种树 阅读(151) 评论(0) 推荐(0) 编辑

《深入理解ngx》—— 模块基础
摘要:1. configure 添加模块 1.1 添加一个 http 模块 在./src/test下创建config 内容如下 # 定义模块名称 1 ngx_addon_name=ngx_http_test_module # 向http类添加 新模块 2 HTTP_MODULES="$HTTP_MODUL 阅读全文

posted @ 2022-05-17 21:51 开心种树 阅读(413) 评论(0) 推荐(0) 编辑

《深入剖析ngx》——请求定位
摘要:1. location 指令 配置解析 1.1 指令格式 location配置支持如下格式, location 的参数是 uri, 可以是模糊的,也可以是绝对的 1.2 配置解析——生成loc树 2949 static char * 2950 ngx_http_core_location(ngx_c 阅读全文

posted @ 2022-05-16 11:17 开心种树 阅读(94) 评论(0) 推荐(0) 编辑

ngx——共享内存
摘要:0. 简介 共享内存是ngx实现 进程间 全局对象 的方法, 比如 一个抗cc模块,需要记录 cc数据,但 进程间内存隔离,导致 工作进程 只能记录访问自己的 cc数据, 所以需要申请一个共享内存,在共享内存上构造cc数据,多个工作进程互斥操作 该对象。 1 ngx_shm_zone_t 25 ty 阅读全文

posted @ 2022-05-13 10:48 开心种树 阅读(210) 评论(0) 推荐(0) 编辑

ngx——内存池管理
摘要:1. 有哪些内存池 init_cycle.pool : 用于初始化时使用,初始化后一定被释放 196 main(int argc, char *const *argv) 253 init_cycle.pool = ngx_create_pool(1024, log); 292 cycle = ngx 阅读全文

posted @ 2022-04-28 16:27 开心种树 阅读(59) 评论(0) 推荐(0) 编辑

ngx——如何读写文件
摘要:1. 读文件 1.1 读配置文件 1.1.1 打开文件 除了 获得文件描述符,还获得 文件信息 struct stat,这些信息都存放在 ngx_file_t 并使用 ngx_buf_t 用于缓存文件内容 而 ngx_file_t 和 ngx_buf_t 组合成 ngx_conf_file_t 15 阅读全文

posted @ 2022-04-28 15:15 开心种树 阅读(236) 评论(0) 推荐(0) 编辑

《深入剖析ngx》——upstream模块
摘要:0. 什么是upstream 如,ngx通过proxy模块,将请求转发给上游http服务器,并最终返回给客户端。ngx通过cgi,将请求转发给php服务器,并返回给客户端。 1. 配置解析 简单配置如下 http { upstream { server localhost:8080; server 阅读全文

posted @ 2022-04-26 17:46 开心种树 阅读(262) 评论(0) 推荐(0) 编辑

《深入剖析ngx》——请求处理
摘要:请求处理一定的流程是 创建监听套接字 接受连接 读取数据,解析请求 1. 监听套接字 1.1 加载配置——listen指令 ngx加载完 listen指令后会构造如上结构。 可见,ngx以 端口号为一个单位排布: 比如 80端口 : 127.0.0.1 192.168.1.1 8080端口: 192 阅读全文

posted @ 2022-04-26 16:31 开心种树 阅读(474) 评论(0) 推荐(0) 编辑

《深入剖析ngx》——变量机制
摘要:1. ngx对变量性质的定义 用户可以在配置文件中使用变量,如 http_user_agent 就是变量,如上会根据 若使用IE访问 重写url。 ngx变量只有字符串类型,可以有用户定义的配置赋值,也可以由 ngx 自动赋值(如上,每次收到请求 自动对 http_user_agent 赋值)。 变 阅读全文

posted @ 2022-03-17 17:28 开心种树 阅读(355) 评论(0) 推荐(0) 编辑

《深入剖析ngx》—— 事件管理
摘要:1. 综述 ngx 是事件驱动,没有事件,ngx会一直阻塞在 epoll_wait 或 sigsuspend 上,ngx的事件有 IO事件,定时器事件。 2. 多路IO模型 ngx对多路复用IO进行了封装。 封装为 ngx_event_action_t 结构体,该结构体主要属性为 回调函数 为了方便 阅读全文

posted @ 2022-03-15 10:28 开心种树 阅读(918) 评论(0) 推荐(0) 编辑

《深入剖析ngx》——模块综述
摘要:1. 模块机制 ngx模块大致分为: handlers: 协同完成客户端处理,产生数据。 filters : 对handlers产生的数据进行各种过滤处理(增,删,改)。 upstream : 如果存在真实后端服务器,ngx可用upstream模块充当反向代理。 load-balance : 当ng 阅读全文

posted @ 2022-03-15 09:47 开心种树 阅读(617) 评论(0) 推荐(0) 编辑

《深入剖析ngx》——配置解析
摘要:1. 配置格式定义 1.1 配置项 ngx定义了两种配置项, 简单,以 ; 结尾 复杂,以 {} 结尾 由于简单为;结尾,所以可以直接分行写 1.2 上下文 复杂匹配项有上下文,实现继承。 2. 指令定义 ngx定义了一些指令,模块自己可以定义指令。 如 daemon 指令 ngx定义指令对象为 n 阅读全文

posted @ 2022-03-14 14:11 开心种树 阅读(1554) 评论(0) 推荐(0) 编辑

《深入剖析ngx》——数据结构
摘要:1. ngx_str_t 2. ngx_list_t 3. ngx_array_t 4. ngx_queue_t 5. ngx_pool_t 6. ngx_hash_t 7. ngx_radix_tree_t 阅读全文

posted @ 2022-03-11 13:58 开心种树 阅读(46) 评论(0) 推荐(0) 编辑

《深入剖析ngx》——进程模型
摘要:1. 进程工作 ngx是多进程模型:work进程,master进程,cache进程。 ngx还使用 upstream等模块实现和 其他服务器通信 master和worker进程工作流程如下 可以看出 用户使用信号控制 监控进程,监控进程 控制工作进程 监控进程主要处理 用户的信号, 监控进程使用 s 阅读全文

posted @ 2022-03-11 13:54 开心种树 阅读(1073) 评论(0) 推荐(0) 编辑

《深入剖析ngx》——调试
摘要:1. gdb调试 编译带调试信息的ngx ./configure --with-cc-opt='-g -O0' CFLAGS='-g -O0' ./configure make CFLAGS='-g -O0' gdb -p 3333 (gdb)attach 3333 若要gdb支持查看宏定义,需要 阅读全文

posted @ 2022-03-10 15:20 开心种树 阅读(139) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示