Nginx静态资源配置核心是精准映射域名到目录:全局root适用于共用资源;分域名用alias避免路径拼接错误;带前缀资源用alias末尾加/;跨域需add_header显式放行。

直接在 server 块里配 root 或 alias,按域名区分路径即可。核心是让每个域名精准映射到它该用的静态文件目录,不混用、不拼错、不漏权限。
统一资源用全局 root(最简场景)
所有域名共用同一套静态文件(比如公共 JS/CSS/图片),物理路径完全一致:
- 把
root /var/www/static;放在http块顶层,所有server自动继承 - 每个
server只需声明server_name,不用再写root - 例如请求
site-a.com/logo.png和site-b.net/logo.png都会去找/var/www/static/logo.png - 注意:某个
server若单独写了root,会覆盖全局设置,慎用
分域名指向不同子目录(推荐 alias)
各域名对应不同资源子集(如 dog.aimiter.com 用 /var/www/html/dog/,cat.aimiter.com 用 /var/www/html/cat/):
- 不要靠
root拼接路径,容易因斜杠多/少导致 404 - 改用
location /+alias,明确替换整个匹配段 - 示例:
location / { alias /var/www/html/dog/; }→ 请求/style.css直接读/var/www/html/dog/style.css - 每个域名独立配一个
server块,互不影响
带路径前缀的静态资源(如 /static/ 或 /web/)
前端构建后资源带固定前缀(如 /static/js/app.js),但实际文件在磁盘无此层级:
- 用
location /static/ { alias /path/to/assets/; },注意alias值末尾必须有/ - 避免写成
root /path/to/assets;+location /static/,否则会拼成/path/to/assets/static/ - 若前缀不固定(如同时存在
/web/和/web/test/),可用try_files+rewrite回退处理
跨域与安全补充
静态资源被其他域名页面引用时(如 CDN 或微前端),需显式放行:
- 在对应
location块加:add_header Access-Control-Allow-Origin "*"; - 若只允许特定域名,把
*换成https://your-app.com - 搭配
add_header Access-Control-Allow-Methods "GET";和add_header Access-Control-Allow-Headers "Origin,Accept"; - 记得 reload Nginx 生效:
sudo nginx -s reload


















