一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Nginx 中怎么实现静态资源按域名进行分类服务

时间:2026-07-03 09:55:52 编辑:袖梨 来源:一聚教程网

Nginx可通过多个server块按域名隔离静态资源服务:每个server_name绑定独立root目录,支持全局root继承与alias精准映射前缀路径,并可按环境配置访问控制、日志及缓存策略。

直接用 多个 server 块 + 不同的 server_name 和 root 就能实现按域名分类服务静态资源,不需要改代码、不依赖后端,纯靠 Nginx 配置隔离。

域名与根目录一对一绑定

每个域名对应独立物理目录,Nginx 通过 server_name 匹配后,把请求路由到专属 root 路径:

  • dev.example.comroot /var/www/dev;
  • test.example.comroot /var/www/test;
  • prod.example.comroot /var/www/prod;

确保 DNS 或 /etc/hosts 已解析这些域名到服务器 IP。HTML、JS、CSS、图片等文件放对应目录下,访问即生效。

避免路径混用:慎用全局 root

如果所有域名共用同一套静态文件(比如公共图标、通用 CSS),可把 root 放在 http 块顶层,让所有 server 继承:

  • http { root /var/www/static; ... }
  • server 只需写 server_name,不用再设 root

⚠️ 注意:某个 server 若单独写了 root,会覆盖全局设置——容易误配导致资源错乱。

带前缀的资源用 alias,末尾必须加斜杠

前端构建后 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;),排查问题不干扰。

热门栏目