- 博客(943)
- 问答 (3)
- 收藏
- 关注
原创 下载和安装 Git
Git 官方网站:https://git-scm.com/nextnextinstall查看版本信息验证安装是否成功克隆一个仓库(从 GitHub 下载项目)命令行:克隆到绝对路径(如 D 盘的 projects 文件夹)
2026-01-12 23:34:50
78
原创 ngx_http_variable_t
变量叫什么name怎么读data怎么写data有什么特性flags如何高效访问index当 Nginx 启动时,会注册所有内置变量(如$host等)到全局变量哈希表中。模块也可以通过注册自定义变量。在处理每个 HTTP 请求时,Nginx 利用该结构体动态获取或设置变量值,支撑了配置文件中强大的变量替换能力。
2026-01-12 18:10:42
513
原创 ngx_http_core_variables
这个数组是 Nginx变量系统的基石高性能:常用变量(如 host、user-agent)直接映射到结构体字段,避免哈希查找。灵活性:通过*_prefix机制支持无限扩展(如$http_xxx安全性:区分只读/可写变量(如args可写,uri不可写)。可观测性:提供丰富的请求/响应/连接/系统指标。
2026-01-12 17:48:51
599
原创 struct sockaddr
特性类型通用地址指针IPv4 专用地址指针用途系统调用接口(如bind实际操作 IPv4 地址字段访问不能直接访问 IP/端口可直接访问sin_portsin_addr地址族任意(AF_INET, AF_INET6…)仅 AF_INET大小通常 16 字节通常 16 字节(与 sockaddr 一致)转换需从具体类型强制转换而来需从通用类型强制转换回来(需检查族)
2026-01-10 13:51:48
334
原创 epoll
epoll 是 Linux 内核提供的一种高性能 I/O 事件通知机制,属于技术,用于高效地监听和管理大量文件描述符(file descriptors, FDs)上的 I/O 事件(如可读、可写、异常等)。它是 select 和 poll 的改进版,特别适用于高并发网络服务器(如 Nginx、Redis、HAProxy 等)。
2026-01-06 14:02:48
651
原创 配置指令-events
在属于2. 指令类型1. 该指令只能出现在主配置上下文(main context) 中。主配置上下文指的是 Nginx 配置文件的最顶层,即不在任何 块内部的位置。该指令必须带一个配置块(即花括号 ),用于包含子指令。语法特征:指令后跟 ,形成一个配置上下文块。该指令不接受任何参数(除了后面的 块)。非法写法:4. 三者组合的完整语义等价于告诉 Nginx: 函数是 Nginx 配置解析阶段用于处理 配置块的核心函数。用于在解析配置文件时解析 指令这是一个静
2026-01-05 14:33:34
943
原创 ngx_core_module 模块
该函数的核心作用设置默认配置值:如daemonmaster等。校验 CPU 亲和性配置一致性。初始化 PID 文件路径,并生成.oldbin路径(用于平滑升级)。在 root 启动时自动切换到 nobody 用户/组(提升安全性)。初始化锁文件路径,并确保 reload 时锁文件路径不变(避免多进程竞争问题)。该函数是 Nginx 启动流程中配置生效前的关键一步,确保所有核心参数都有合理默认值,并完成系统资源路径的标准化。├── 1. 初始化默认配置值。
2026-01-01 16:11:40
572
原创 ngx_conf_handler
的核心作用指令路由:根据指令名找到对应的模块和。上下文校验:确保指令用在允许的配置块中(如httpserver语法校验块指令必须有;普通指令必须有;;参数数量必须合法。配置定位:确定该指令的值应写入哪个配置结构体(main/srv/loc)。调用处理函数:执行模块注册的set函数完成实际配置。错误反馈:提供清晰的错误信息(未知指令、位置错误、参数错误等)。这是 Nginx高度模块化、可扩展配置系统的核心实现,也是其配置语法强大而严谨的基础。名称过滤→ 是我认识的指令吗?模块过滤。
2025-12-31 17:09:42
738
原创 ngx_conf_parse
的核心作用支持三种解析模式主配置文件(nginx.conf配置块({}内部)命令行参数(-g逐 token 解析使用提取指令。识别;(单行)、(块开始)、(块结束)、EOF。指令分发普通指令 →自定义上下文 →错误处理严格括号不匹配、未知指令、参数错误等都会立即失败。资源管理完善自动分配/释放 buffer。正确关闭文件。支持嵌套解析(通过prev恢复上下文)。调试支持用于-T输出完整配置。
2025-12-30 13:32:05
742
原创 ngx_conf_read_token
是 Nginx 配置语法解析的词法分析器(lexer)逐字节扫描配置文件识别 token 边界(考虑引号、转义、注释)构建参数数组cf->args返回 token 类型供语法分析器使用。
2025-12-29 20:51:51
720
原创 ngx_read_file
ngx_read_file 的核心作用从文件指定偏移 offset 读取最多 size 字节到 buf。自动根据平台选择 pread(推荐)或 lseek + read(兼容)。出错时记录日志并返回 NGX_ERROR。成功时返回实际读取字节数,并更新 file->offset(逻辑偏移)和(在非 pread 路径下)file->sys_offset(系统偏移)。是 Nginx 文件 I/O 抽象层的关键函数,被用于静态文件服务、日志读取、配置加载等场景。
2025-12-28 18:26:45
608
原创 ngx_destroy_cycle_pools
目的:安全释放配置解析过程中使用的两个内存池,防止内存泄漏。调用时机:通常在配置解析失败、初始化中断、或重载配置前清理旧资源时调用。顺序:先销毁temp_pool,再销毁pool。虽然两者通常是独立的,但按“临时 → 持久”的顺序销毁更符合资源生命周期逻辑。
2025-12-25 22:29:25
278
原创 ngx_array_create
是一个工厂函数在内存池中分配结构体;调用为其分配初始数据缓冲区并设置字段;成功则返回数组指针,失败则返回NULL。这种设计将“分配 + 初始化”封装在一起,简化了动态数组的创建过程。
2025-12-25 18:00:08
315
原创 ngx_cycle_modules
的作用是:为当前 Nginx 运行周期(cycle)分配并初始化一个模块指针数组,将编译时确定的静态模块列表(ngx_modules)复制进去,供后续模块初始化(如调用 init_module 回调)等阶段使用。所有模块在编译时注册到 ngx_modules;每个 cycle 拥有自己独立的模块列表副本;便于支持配置重载(reload)时重建 cycle 而不影响运行中的旧 cycle。
2025-12-24 21:55:09
295
原创 ngx_list_init
void *elts;// 指向实际元素数组的指针// 当前已使用的元素个数// 指向下一个 part// 指向最后一个 part// 第一个 part(内嵌,非指针)// 每个元素的大小(字节)// 每个 part 可容纳的元素个数// 所属的内存池所以就是初始化这样一个结构:分配第一个 part 的元素数组,并设置好各个字段。是 Nginx 列表结构的初始化函数为列表的第一个数据块分配内存(n * size字节);初始化列表头结构中的各个字段;
2025-12-23 15:59:14
448
原创 ngx_str_rbtree_insert_value
函数作用该函数实现了基于字符串的红黑树插入比较逻辑整数 key(通常为哈希值)→ 快速过滤;字符串长度→ 处理哈希冲突;字符串内容(字典序)→ 精确比较。它只负责定位插入位置并建立父子关系,不负责红黑树的再平衡。分离“比较逻辑”与“平衡逻辑”,使红黑树可复用于不同键类型。
2025-12-22 21:23:25
664
原创 ngx_rbtree_init
在2. 代码分析这段代码是 Nginx 1.24.0 源码中的一个宏定义:,用于初始化一个红黑树(Red-Black Tree)结构。在 Nginx 中,红黑树是一种高效的自平衡二叉搜索树,常用于定时器管理、缓存索引、等需要快速插入、查找和删除的场景。这是一个带参数的 C 宏,接受三个参数:作用:初始化哨兵节点 。详细说明:在红黑树实现中,哨兵节点(sentinel) 是一个特殊的“空”节点,通常用作叶子节点的子节点(代替 ),简化边界条件处理。 是另一个宏哨兵节点不存储实际数据,
2025-12-22 17:59:34
459
原创 ngx_array_init
void *elts;// 指向元素存储区// 当前元素个数// 单个元素大小(字节)// 已分配的容量(最多可存元素数)// 所属内存池。
2025-12-22 14:05:13
236
原创 ngx_pstrdup
在指定内存池中分配一块与源字符串等长的内存,并将源字符串的内容(src->data的src->len字节)完整复制过去,返回新内存的指针。
2025-12-21 19:23:25
332
原创 ngx_destroy_pool
执行所有注册的清理函数(如关闭 fd、释放外部资源)。(调试时)打印将要释放的内存地址和未使用空间。释放所有 large 分配的内存块(直接 malloc 的大内存)。释放内存池自身所有 ngx_pool_t 块(包括主块和后续扩展块)。
2025-12-21 16:02:05
518
springboot文件上传云服务器出错,无法写入磁盘
2021-05-28
springboot文件上传到云服务器错误?
2021-05-27
springboot项目部署到阿里云服务器后文件上传功能无法实现,如何解决?
2021-05-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅