You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译安装Nginx 1.18未使用配置模块路径问题求助

问题分析

你通过源码编译Nginx 1.18时指定了--modules-path=/usr/lib/nginx/modules,但启动时Nginx仍去/usr/modules查找模块,核心原因是:

  • Nginx加载模块时,若配置中使用相对路径(如load_module ndk_http_module.so;),会默认基于编译时指定的--prefix目录解析路径。
  • 你编译时的--prefix大概率是/usr(或默认未修改导致Nginx将相对路径解析为/usr/modules),而--modules-path仅指定模块的安装目录,不会改变Nginx加载模块时的默认搜索路径。
  • Ubuntu仓库的Debian包版本在编译时做了定制化处理,调整了模块搜索路径与配置文件的路径适配,因此不存在此问题。
解决方案

以下三种方法任选其一即可:

方法1:修改模块配置文件为绝对路径

直接修改/etc/nginx/modules-enabled/下所有配置文件中的模块路径,将相对路径替换为绝对路径:

# 原配置
load_module ndk_http_module.so;

# 修改后
load_module /usr/lib/nginx/modules/ndk_http_module.so;

方法2:创建软链接映射模块路径

将/usr/lib/nginx/modules下的模块软链接到Nginx默认搜索的/usr/modules目录:

mkdir -p /usr/modules
ln -s /usr/lib/nginx/modules/*.so /usr/modules/

执行后重启Nginx即可生效。

方法3:重新编译Nginx调整prefix路径

重新编译时同时指定--prefix=/usr/lib/nginx与--modules-path=/usr/lib/nginx/modules,让Nginx的默认模块搜索路径与你指定的模块安装路径一致:

# 进入Nginx源码目录
cd nginx-1.18.0
# 重新配置编译参数
./configure --prefix=/usr/lib/nginx --modules-path=/usr/lib/nginx/modules [其他你需要的编译参数]
# 编译安装
make && make install

之后配置文件中使用相对路径加载模块即可正常识别。

内容的提问来源于stack exchange,提问作者Larry Martell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:23:18