Nginx加载headers-more-nginx-module有两种方式:静态编译(通用,推荐生产环境)和动态加载(需Nginx≥1.9.11且编译时启用--with-compat)。静态编译需下载匹配源码并用--add-module指定模块路径;动态加载则用--add-dynamic-module编译出.so文件,再通过load_module指令加载。

Linux 下让 Nginx 加载 headers-more-nginx-module,核心就两步:**编译时集成模块** 或 **运行时动态加载**。具体选哪种,取决于你当前 Nginx 是如何安装的——是源码编译安装、包管理器安装(如 apt/yum),还是已存在二进制版本。
确认你的 Nginx 是否支持动态模块
动态加载(load_module)仅适用于 Nginx 1.9.11 及以上版本,且编译时需启用动态模块支持。检查方法:
- 执行
/usr/local/nginx/sbin/nginx -V 2>&1 | grep -o 'with-http_dav_module'(或直接看nginx -V输出中是否有--with-compat或提及dynamic) - 更直接的方式:运行
nginx -V,若输出中包含--add-dynamic-module相关记录,说明支持;否则只能走静态编译路径
方式一:静态编译(通用,推荐用于生产环境)
适用于所有 Nginx 版本,尤其适合从源码安装或需长期稳定运行的场景:
- 下载匹配的 Nginx 源码(如
nginx-1.24.0)和headers-more-nginx-module稳定版(如v0.34),解压到同一父目录(如/src) - 进入 Nginx 源码目录,执行
./configure并显式添加模块路径:--add-module=/src/headers-more-nginx-module-0.34(注意必须是绝对路径,且指向含config文件的根目录) - 补全常用选项,例如:
--prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --user=www-data --group=www-data - 执行
make && sudo make install - 验证:重启后运行
nginx -V 2>&1 | grep headers-more,应看到模块路径被列出
方式二:动态加载(免重编整个 Nginx)
适用于 Nginx ≥1.9.11 且已安装、不想重建二进制的情况:
- 用
--add-dynamic-module参数重新编译模块(不是整个 Nginx):./configure --prefix=/usr/local/nginx --add-dynamic-module=/path/to/headers-more-nginx-module
然后make即可(make install会生成.so文件,通常在objs/ngx_http_headers_more_filter_module.so) - 将生成的
.so文件复制到 Nginx 模块目录(如/usr/local/nginx/modules/),确保权限可读 - 在
nginx.conf的 全局 http 块最上方 添加:load_module modules/ngx_http_headers_more_filter_module.so; - 重启 Nginx:
nginx -t && nginx -s reload
配置生效与常见验证点
模块加载成功后,才能使用 more_set_headers、more_clear_headers 等指令:
- 在
http、server或location块中写配置,例如:more_clear_headers 'Server' 'X-Powered-By';more_set_headers 'X-Frame-Options: SAMEORIGIN'; - 修改后务必执行
nginx -t测试语法,再nginx -s reload - 用
curl -I http://your-domain/检查响应头是否按预期变化,确认模块真正起效


















