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 解决,但实际会遇到:
蛙漫wanna官网版直连-蛙漫wanna官网版安全直连官网入口
second-brain-setup:AI Agent 工具实践指南
DeepSeek API错误排查:400 Invalid schema for function ‘Artifact’: “^(?!.*实用指南
免费韩漫在线阅读漫画入口-韩漫在线观看免费完整版漫画
使用IntelliJ IDEA进行Claude Code代码开发实用指南
neilization:AI Agent 工具实践指南