企业内网门户用alias映射子系统需路径剥离干净、物理隔离明确;每个子系统配独立location块,前缀与alias均以斜杠结尾;共享资源统一挂载至/shared/;注意权限、挂载状态及禁用正则和rewrite。
在企业内网门户中用 alias 映射多个独立子系统,关键不是“写得多”,而是“路径剥离干净、物理隔离明确、互不干扰”。内网环境虽不暴露公网,但子系统往往来自不同团队、部署在不同路径、甚至跨文件系统,alias 的前缀替换特性正好适配这种松耦合架构。
每个子系统对应一个独立的 location 块,前缀必须以斜杠结尾,alias 路径也必须以斜杠结尾,二者严格对齐。例如:
http://intranet.example.com/admin/,静态资源在 /opt/apps/admin/dist/ → 配置:location /admin/ { alias /opt/apps/admin/dist/; try_files $uri $uri/ /admin/index.html; }
http://intranet.example.com/reports/,构建产物在 /srv/reports/ui/ → 配置:location /reports/ { alias /srv/reports/ui/; try_files $uri $uri/ /reports/index.html; }
http://intranet.example.com/docs/v2/,内容存于 /mnt/nas/docs/v2/ → 配置:location /docs/v2/ { alias /mnt/nas/docs/v2/; }
图标、字体、i18n 配置等常被多个子系统共用。与其各自打包,不如在 Nginx 层级单独映射一个共享资源池:
/var/www/shared/assets/(如 /var/www/shared/assets/icons/、/var/www/shared/assets/locales/)location /shared/ { alias /var/www/shared/assets/; }
/shared/icons/logo.svg,Nginx 自动从统一路径读取,不经过任何子应用目录内网服务器常使用 NFS、CIFS 或本地挂载盘,alias 指向的路径必须满足:
www-data 或 nginx)对目标目录有执行(x)权限——Linux 下进入目录必须有 x,否则 403/mnt/nas/,需确认该挂载已开机自动挂载且状态正常(mount | grep nas)disable_symlinks off;
企业门户配置强调可维护性和可审计性,应规避以下高风险写法:
location ~ /admin/ 这类正则匹配后接 alias —— 最新明确不支持,行为不可靠alias 生效前用 rewrite 修改 URI,因为 alias 基于原始请求 URI 替换前缀,重写后会导致路径错位root 替代 alias 处理子路径 SPA:比如 root /opt/apps/admin/dist; 配合 location /admin/,会导致请求 /admin/js/app.js 实际查找 /opt/apps/admin/dist/admin/js/app.js(多了一层 admin),必然 404