Nginx 多站点目录隔离应使用独立 server 块而非 location + root:因 root 在 location 中会覆盖并拼接 URI 导致路径错误;推荐基于域名或端口配置多个 server 块,语义清晰、互不影响;若必须同域名下路径隔离,则用 alias + 精确 location + try_files,并注意 alias 末尾斜杠。
在 Nginx 中,location 块不能“局部覆盖” root 指令来实现多站点目录隔离——这是个常见误解。root 指令在 location 中不是“局部生效”,而是完全替代 server 级 root,并保留 URI 前缀,容易导致路径错位和 404。真正安全、清晰、可维护的多站点目录隔离,靠的是独立 server 块 + server_name 匹配,而非在一个 server 内用多个 location + root 拼凑。
root 在 location 中的行为是“作用域覆盖”,不是“路径微调”:
这才是 Nginx 原生支持、语义清晰、运维友好的方式:
server { listen 80; server_name site1.com; root /var/www/site1; index index.html; }
server { listen 80; server_name site2.com; root /var/www/site2; index index.html; }
server { listen 8081; root /var/www/app1; index index.html; }
server { listen 8082; root /var/www/app2; index index.html; }
那就放弃 root,改用 alias + 精确 location + try_files,并注意路径末尾斜杠:
比如把 React/Vue 打包产物放在 /admin/ 和 /user/ 下,看似能用 location + alias 解决,但实际会遇到:
Tplink企业版路由器WiFi名称的默认设置介绍(Tplink企业版路由器WiFi名称的默认设置是什么)
Tplink路由器灯常亮无法上网的原因分析(如何解决Tplink路由器灯常亮无法上网的问题)
Tplink千兆企业级路由器自动重启的作用和优势介绍(如何设置Tplink千兆企业级路由器自动重启功能)
一根天线的tplink路由器有哪些(一根天线的Tplink路由器的特点和优势介绍)
tplink路由器外网访问不了nas(Tplink路由器外网访问NAS的原因分析)
Tplink无法搜到路由器的原因分析(如何解决Tplink无法搜到路由器的问题)