多实例 Nginx 必须物理隔离:每个实例独占安装路径(如/opt/nginx2)、配置树、日志目录(如/opt/nginx2/logs/)、临时目录及 systemd 服务单元,禁用相对路径,全部使用绝对路径,并通过 -c 显式指定配置启动。

多实例 Nginx 的目录结构不能“复用一套路径”,必须按实例物理隔离。核心原则是:每个实例拥有专属安装前缀(如 /opt/nginx2)、独立配置树、分离日志路径、不共享任何运行时资源。
配置目录必须完全独立
每个实例不能共用 /etc/nginx 或默认 conf 路径。正确做法是为第二个实例新建完整配置目录,例如:
- 创建
/opt/nginx2/conf/,把nginx.conf、conf.d/、certs/、mime.types全部放进去 -
nginx.conf中的include指令必须指向本实例目录,如include conf.d/*.conf; - 禁用相对路径写法(如
./logs/access.log),所有路径一律用绝对路径,例如pid /opt/nginx2/logs/nginx.pid; - 启动时强制指定配置:
nginx -c /opt/nginx2/conf/nginx.conf
日志目录按实例严格分治
混用日志会彻底丧失可追溯性。每个实例的日志必须独占一个目录:
- 在
http块中统一设置全局日志路径:access_log /opt/nginx2/logs/access.log main;、error_log /opt/nginx2/logs/error.log warn; - 单个
server块内可覆盖为更细粒度日志,如access_log /opt/nginx2/logs/admin-access.log; - 启动前手动创建并授权:
mkdir -p /opt/nginx2/logs && chown nginx:nginx /opt/nginx2/logs
临时目录与静态资源也要隔离
client_body_temp、proxy_temp 等临时目录若被多个实例共用,容易因权限或空间争抢导致 500/502 错误:
- 在
http块中显式声明各自路径:client_body_temp_path /opt/nginx2/client_body_temp;、proxy_temp_path /opt/nginx2/proxy_temp; - 静态资源根目录不要放在默认
html/下,应为每个实例设专属路径,如root /opt/nginx2/html/site-a; - 若需托管多个前端项目,建议按实例再分层,例如:
/opt/nginx2/html/main/、/opt/nginx2/html/admin/
服务单元与二进制文件保持边界清晰
避免两个实例都依赖 /usr/sbin/nginx 和同一个 systemd unit:
- 推荐源码编译安装多个实例,指定不同 prefix:
./configure --prefix=/opt/nginx2 - 若复用同一二进制,需确保其具备所需模块(如 stream),且各实例通过
-c参数加载各自配置 - 为每个实例编写独立 systemd service 文件,如
nginx2.service,其中ExecStart明确调用nginx -c /opt/nginx2/conf/nginx.conf - 进程管理、PID 文件、信号控制全部隔离,互不影响


















