--prefix 是源码编译 Nginx 时最核心参数,指定运行时根目录(如 /opt/nginx),决定 conf、sbin、logs、html 等默认路径;该路径编译时固化,不可运行时修改,需配合 --conf-path 等覆盖子路径。

源码编译 Nginx 时,指定安装路径最直接、最核心的方式是使用 --prefix 参数。它不是简单“把文件拷到哪”,而是定义整个 Nginx 的根目录结构,后续所有子目录(conf、sbin、logs、html)都基于它生成。
用 --prefix 设定根安装路径
这是必须明确指定的参数,否则默认会装到 /usr/local/nginx,生产环境通常不推荐。
- 例如:执行
./configure --prefix=/opt/nginx后,Nginx 将以/opt/nginx为根目录 - 配置文件自动落在
/opt/nginx/conf/nginx.conf - 主程序在
/opt/nginx/sbin/nginx - 日志写入
/opt/nginx/logs/,静态页默认服务路径为/opt/nginx/html/ - 该路径在编译时固化,安装后无法通过启动参数更改 —— 想换位置只能重新 configure + make + make install
用 --conf-path 等参数覆盖特定子路径(可选但常用)
如果只需调整某一部分路径(比如把配置文件统一管在 /etc 下),可在 --prefix 基础上叠加指定:
-
--conf-path=/etc/nginx/nginx.conf:指定主配置文件位置(一旦设置,启动时只认这个路径,不再查--prefix/conf) -
--sbin-path=/usr/sbin/nginx:指定 nginx 可执行文件路径 -
--pid-path=/var/run/nginx.pid:指定 pid 文件位置 -
--error-log-path=/var/log/nginx/error.log和--http-log-path=/var/log/nginx/access.log:分别指定错误日志和访问日志路径 - 这些路径可以跨分区或指向符号链接,但务必确保运行用户(如 www 或 nginx)有对应目录的读写权限
注意依赖与权限准备
指定路径前,需提前确认几件事:
- 目标安装路径的父目录存在且可写(如
/opt/nginx要求/opt存在且当前用户有写权限) - 若依赖库(如 OpenSSL、PCRE、zlib)不在系统默认路径(
/usr/lib64、/usr/include),还需配合--with-openssl=PATH、--with-pcre=PATH等参数显式声明 - 必要时补充链接器选项,例如
--with-ld-opt="-L/opt/openssl/lib -Wl,-rpath,/opt/openssl/lib",确保运行时能正确加载动态库
完整示例流程
假设你要把 Nginx 1.24.0 安装到 /www/server/nginx,配置文件放 /etc/nginx,日志存 /var/log/nginx:
- 先创建所需目录并赋权:
sudo mkdir -p /www/server/nginx /etc/nginx /var/log/nginx && sudo chown $USER:$USER /www/server/nginx - 进入解压后的源码目录,运行:
./configure \<br> --prefix=/www/server/nginx \<br> --conf-path=/etc/nginx/nginx.conf \<br> --error-log-path=/var/log/nginx/error.log \<br> --http-log-path=/var/log/nginx/access.log \<br> --pid-path=/var/run/nginx.pid \<br> --with-pcre \<br> --with-zlib \<br> --with-http_ssl_module - 然后执行:
make && sudo make install


















