必须下载nginx与headers-more-nginx-module源码,configure时用绝对路径--add-module显式启用;需提前安装编译工具及pcre、zlib、openssl开发库;安装后用nginx -v验证模块存在,并通过more_set_headers测试响应头生效。

要在 Linux 下通过源码编译安装 Nginx 并集成 headers-more-nginx-module,关键在于:不能直接用包管理器安装,必须下载 Nginx 源码、下载模块源码,并在 configure 阶段显式启用该模块。它不包含在官方 Nginx 中,也未被主流发行版的预编译包默认启用。
准备依赖和源码
确保系统已安装基础编译工具和 PCRE、zlib、OpenSSL 开发库:
- Ubuntu/Debian:
sudo apt update && sudo apt install build-essential libpcre3-dev zlib1g-dev libssl-dev - CentOS/RHEL:
sudo yum groupinstall "Development Tools" && sudo yum install pcre-devel zlib-devel openssl-devel
然后分别获取:
- Nginx 源码(例如
nginx-1.24.0.tar.gz)→ 官网 nginx.org/download -
headers-more-nginx-module源码 → GitHub 仓库 openresty/headers-more-nginx-module,建议下载稳定 release(如v0.34)或克隆后检出 tag
解压并配置编译参数
将两个压缩包解压到同一父目录下(如 /src),保持目录结构清晰:
/src/nginx-1.24.0/ /src/headers-more-nginx-module-0.34/
进入 Nginx 源码目录,运行 ./configure,必须显式添加 --add-module 参数指向模块路径:
./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_v2_module \ --add-module=/src/headers-more-nginx-module-0.34 \ --user=www-data \ --group=www-data
注意:--add-module 的路径必须是绝对路径,且指向模块的根目录(含 config 文件);若同时启用其他第三方模块(如 echo、lua),需逐个添加对应 --add-module。
编译安装并验证模块
执行编译与安装:
make -j$(nproc) sudo make install
安装完成后检查模块是否生效:
- 运行
/usr/local/nginx/sbin/nginx -V 2>&1 | grep -o with-http_headers_more_module,输出应有该字符串 - 或查看完整编译参数:
/usr/local/nginx/sbin/nginx -V,确认--add-module=...行存在且路径正确
简单测试:在 server 块中添加
more_set_headers "X-Processed-By: nginx-with-more";
重启 Nginx 后用 curl -I http://localhost 查看响应头是否包含该字段。
后续维护注意事项
该模块属于第三方扩展,升级 Nginx 时需重新编译;模块本身更新后(如修复 CVE 或新增指令),也需重新 configure + make;生产环境建议记录完整 configure 命令,避免遗漏关键模块或安全选项(如 --with-http_ssl_module)。











