Nginx目录结构中划分测试与生产环境配置的核心是物理隔离、逻辑清晰、可维护性强:通过/etc/nginx/conf.d/下分设dev.conf、test.conf、prod.conf实现配置分离,各环境独享root路径、日志、SSL证书及后端地址,配合独立静态目录(/var/www/dev/等)、按域名管理的Let’s Encrypt证书及权限/分支管控,确保互不干扰。

Nginx 目录结构中划分测试与生产环境配置,核心是物理隔离 + 逻辑清晰 + 可维护性强。不是简单地把配置堆在一起,而是让每个环境有自己独立的“家”,互不干扰、一目了然。
按环境拆分配置文件(推荐标准做法)
Nginx 主配置通常只做全局设置(如 worker 数、日志格式、MIME 类型),具体站点路由全部交给 conf.d/ 下的独立文件管理:
-
/etc/nginx/conf.d/dev.conf→ 开发环境专属配置 -
/etc/nginx/conf.d/test.conf→ 测试环境专属配置 -
/etc/nginx/conf.d/prod.conf→ 生产环境专属配置
每个 .conf 文件内定义完整 server 块,包括:
-
server_name dev.example.com;或test.example.com、app.example.com - 独立的
root路径(如/var/www/dev/、/var/www/test/) - 独立的
access_log和error_log(如/var/log/nginx/test_access.log) - 独立的
proxy_pass后端地址(如http://127.0.0.1:3001)
✅ 优势:修改测试配置不会误触生产,CI/CD 部署时可精准覆盖单个文件,避免全量 reload 风险。
静态资源目录严格分离
不同环境必须使用完全隔离的静态文件根目录,防止资源混用或路径污染:
-
/var/www/dev/→dev.conf中root /var/www/dev; -
/var/www/test/→test.conf中root /var/www/test; -
/var/www/prod/→prod.conf中root /var/www/prod;
Vue/React 项目构建时需配合设置 publicPath 或 base(如 VUE_APP_BASE_CONTEXT='/test'),确保生成的 JS/CSS 路径与 Nginx location 匹配。
SSL 证书与密钥按环境存放
Let’s Encrypt 默认按域名签发,天然支持多环境:
-
/etc/letsencrypt/live/dev.example.com/ -
/etc/letsencrypt/live/test.example.com/ -
/etc/letsencrypt/live/app.example.com/
Nginx 配置中直接引用对应路径,无需合并或复用证书。
日志与错误页也按环境区分
每个环境配置自己的日志路径,便于快速定位问题归属:
access_log /var/log/nginx/prod_access.log main; error_log /var/log/nginx/prod_error.log warn;
敏感路径(如 /admin、/api/v1/debug)可在 prod.conf 中显式放行,在 dev.conf 和 test.conf 中直接 return 403; 或 deny all;。
启动与加载机制保持一致但隔离
确保 nginx.conf 中包含:
include /etc/nginx/conf.d/*.conf;
部署脚本或 systemd service 应统一 reload,但因配置文件物理分离,reload 不会引发跨环境影响。建议搭配以下防护:
- 部署前校验:检查
prod.conf是否含dev字样、端口是否被占用 - 权限控制:
/etc/nginx/conf.d/下各.conf文件属主设为不同运维角色(如prod-admin:nginx) - Git 分支策略:
main分支只合入prod.conf,test分支管理test.conf,避免配置错位
不复杂但容易忽略


















