Nginx可通过多个server块按域名隔离静态资源服务:每个server_name绑定独立root目录,支持全局root继承与alias精准映射前缀路径,并可按环境配置访问控制、日志及缓存策略。
直接用 多个 server 块 + 不同的 server_name 和 root 就能实现按域名分类服务静态资源,不需要改代码、不依赖后端,纯靠 Nginx 配置隔离。
每个域名对应独立物理目录,Nginx 通过 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、图片等文件放对应目录下,访问即生效。
如果所有域名共用同一套静态文件(比如公共图标、通用 CSS),可把 root 放在 http 块顶层,让所有 server 继承:
http { root /var/www/static; ... }server 只需写 server_name,不用再设 root
⚠️ 注意:某个 server 若单独写了 root,会覆盖全局设置——容易误配导致资源错乱。
前端构建后 URL 带固定前缀(如 /static/js/app.js),但磁盘路径不含该层级,要用 alias 精准映射:
location /static/ { alias /data/assets/; } ✅ 正确(alias 值末尾有 /)location /static/ { root /data/assets; } ❌ 错误(会拼成 /data/assets/static/)若存在多个前缀(如 /web/ 和 /web/test/),可用 try_files + rewrite 回退处理。
不同域名可启用不同行为,提升协作效率和安全性:
autoindex on; 方便浏览目录;加 add_header X-Env "dev";
allow 192.168.1.0/24; deny all;
server_tokens;加 expires 1y; 和 Cache-Control public
每套环境配独立日志路径(如 access_log /var/log/nginx/prod.access.log;),排查问题不干扰。