Nginx通过server_name按域名隔离开发、测试、生产环境,各环境独享root目录、日志路径及差异化配置(如autoindex、IP限制、HTTPS跳转),无需改代码或后端支持。

用 Nginx 搭建静态服务器时,按域名区分开发、测试、生产环境,核心是利用 server_name 匹配不同域名,并为每个环境配置独立的根目录、日志路径和可选的访问控制。不需要改代码,也不依赖后端服务,纯靠 Nginx 配置就能实现环境隔离。
域名与根目录一一对应
每个环境使用独立子域名(如 dev.example.com、test.example.com、prod.example.com),在 Nginx 配置中为每个 server 块指定 server_name 和 root:
-
dev.example.com→root /var/www/dev; -
test.example.com→root /var/www/test; -
prod.example.com→root /var/www/prod;
确保 DNS 或本地 /etc/hosts 已将这些域名解析到服务器 IP。静态资源(HTML、JS、CSS、图片)直接放在对应目录下即可访问。
按环境启用不同行为
各环境可差异化配置,提升协作效率和安全性:
- 开发环境:开启
autoindex on;方便浏览文件列表;加add_header X-Env "dev";标识来源 - 测试环境:限制仅公司内网 IP 访问,用
allow 192.168.1.0/24;+deny all; - 生产环境:关闭
server_tokens,启用 gzip 压缩,添加缓存头(expires 1y;对静态资源)
日志分离便于问题追踪
为每个 server 块配置独立访问日志和错误日志,避免混杂:
access_log /var/log/nginx/dev.access.log main;error_log /var/log/nginx/dev.error.log warn;- 同理为 test、prod 使用不同日志路径
配合 logrotate 可按环境归档,排查问题时直接查对应日志,不干扰其他环境记录。
HTTPS 与重定向建议
生产环境必须启用 HTTPS;开发/测试可暂用 HTTP,但建议统一加跳转规则:
- 所有 HTTP 请求强制跳转 HTTPS(生产):
return 301 https://$host$request_uri; - 开发/测试若暂无证书,可在
server块中注释掉 SSL 配置,保留 HTTP 端口监听 - 用 Certbot 自动申请 Let’s Encrypt 证书时,对每个域名单独运行(
--domains dev.example.com等)
不复杂但容易忽略。










