nginx源码安装路径与模块须在./configure阶段通过参数一次性指定;--prefix等控制文件位置,--with-*和--add-module决定功能启用与否,二者均不可安装后修改。

源码安装 Nginx 时,指定安装路径和第三方模块不是靠“安装命令”临时决定的,而是在 ./configure 阶段通过参数一次性明确。路径类参数决定文件落点,模块类参数决定功能开关——两者都必须在编译前定好,装完就不能改。
一、用 --prefix 和子路径参数控制安装位置
--prefix 是根路径,其他路径默认基于它生成;显式设置子路径(如 --conf-path)会覆盖默认行为,且启动时只认你指定的那一个位置。
- --prefix=/opt/nginx:设根目录,后续 conf、sbin、logs、html 默认都在其子目录下
-
--conf-path=/etc/nginx/nginx.conf:配置文件放这里,Nginx 启动时就只读这个路径,不再看
/opt/nginx/conf/ - --sbin-path=/usr/sbin/nginx:把主程序 nginx 放进系统 PATH 常见位置,方便全局调用
- --error-log-path=/var/log/nginx/error.log:日志写入标准系统日志目录,便于统一管理
- --pid-path=/var/run/nginx.pid 和 --lock-path=/var/run/nginx.lock:确保运行时文件存放在符合 Linux FHS 规范的位置
二、用 --with-* 和 --add-module 加载模块
内置模块用 --with-xxx 启用,禁用则用 --without-xxx;第三方模块必须用 --add-module=路径 显式引入,路径需为相对或绝对路径(建议用相对路径,如 ../ngx_cache_purge)。
-
--with-http_ssl_module:启用 HTTPS,依赖系统已装
openssl-devel - --with-http_v2_module:启用 HTTP/2,要求 OpenSSL ≥1.0.2(推荐 ≥1.1.1 或使用自定义 OpenSSL 源码)
- --with-http_realip_module:用于反向代理后还原真实客户端 IP
- --add-module=../nginx-sticky-module:添加会话保持模块,需提前 git clone 到相邻目录
- --with-openssl=../openssl-3.0.12:若需静态链接特定 OpenSSL 版本,用此指向源码目录
三、实际配置示例(含路径 + 模块)
下面是一条兼顾规范性与常用功能的 configure 命令:
./configure \ --prefix=/opt/nginx-1.24.0 \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_stub_status_module \ --add-module=../ngx_cache_purge \ --with-openssl=../openssl-3.0.12
执行完 ./configure 后,运行 make && sudo make install 即可完成安装。注意:make 不需要 root,make install 才需要目标目录写入权限。











