开发Nginx自定义模块核心在于源码级集成,需装齐gcc、PCRE、zlib、OpenSSL四类依赖,组织含config文件的模块目录,通过--add-module指定路径,经configure、make编译后用nginx -t验证指令加载与逻辑生效。
开发 Nginx 自定义模块,核心在于环境可编译、代码可加载、逻辑可验证。它不是改配置那么简单,而是要和 Nginx 源码一起编译,走的是“源码级集成”路径。只要依赖装对、目录结构清晰、config 文件写准,一个最简模块几分钟就能跑起来。
不需要额外安装 Nginx 二进制包,而是从源码开始构建。关键依赖只有四类:
build-essential 一键安装)libpcre3-dev),Nginx 的 location 匹配、rewrite 等都靠它zlib1g-dev),用于 gzip、deflate 等响应压缩功能libssl-dev,尤其当你模块涉及 HTTPS 处理或需调用 SSL 相关 API 时模块必须与 Nginx 源码版本兼容。不建议用系统包管理器安装的预编译版 Nginx,因为缺少头文件和构建脚本。
nginx-1.25.4.tar.gz),解压后进入目录release-1.21.0)auto/、src/、configure 等关键路径,这是可编译的前提模块不能独立编译,必须被 Nginx 构建系统识别。标准做法是新建一个独立目录(如 my_module/),并在其中提供:
config:Shell 脚本,告诉 Nginx 构建系统如何引入你的模块。内容通常三行:ngx_addon_name=ngx_http_my_moduleHTTP_MODULES="$HTTP_MODULES ngx_http_my_module"NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_my_module.c"
ngx_http_my_module.c):实现 handler、directive、module 结构体等,必须包含 <ngx_config.h> 等头文件把模块加入 Nginx 编译链,不是插件式加载,而是静态链接进二进制。步骤明确:
./configure --add-module=/path/to/my_module [其它选项],确保输出中出现 checking for my_module ... found
make,成功后检查 objs/nginx 是否生成——这是带模块的新二进制./objs/nginx -t 验证配置语法;再加一条测试 location 和自定义指令,启动后访问看是否生效不复杂但容易忽略