多域名共享静态资源时,Nginx的root配置关键是统一声明、避免覆盖、路径一致:将root /var/www/static;置于http块顶层,由所有server继承;各server不重复声明root;若某server单独配置root则会覆盖全局设置,破坏共享效果。

多域名共享静态资源时,Nginx 的 root 配置关键是统一声明、避免覆盖、路径一致。
最稳妥的做法是把 root 放在 http 块顶层,让所有 server 块继承,而不是每个 server 单独写。这样所有域名请求静态文件(如 /logo.png、/css/app.css)都会指向同一个物理目录,无需重复配置,也不易出错。
例如:
http {
# 全局 root:所有 server 默认使用这个静态根目录
root /var/www/static;
server {
listen 80;
server_name site-a.com;
# 不再写 root,直接继承 http 块的设置
location / {
index index.html;
}
}
server {
listen 80;
server_name site-b.net;
# 同样不写 root,自动用 /var/www/static
location / {
index index.html;
}
}
}这样,访问 site-a.com/js/main.js 和 site-b.net/js/main.js 都会读取 /var/www/static/js/main.js。
需要注意三点:
- 某个 server 若单独写了 root,会覆盖全局设置,导致该域名走自己的路径,失去“共享”效果;
-
所有域名的静态资源结构必须一致,比如都把 CSS 放在
/css/、图片放在/images/下; -
如果某个域名需要额外专属资源,建议用
location+alias单独映射,不要动全局root。
基本上就这些。


















