Nginx路径路由配置异常:Angular应用无法按路径正确跳转
解决Nginx路由多Angular应用的问题
你的配置存在两个关键问题,导致所有请求都跳转到默认页面:
问题1:root路径配置错误
当设置location /admin时,root应该指向包含admin目录的上级路径,而非admin目录本身。当前配置中root /home/ubuntu/apps/admin/,会让Nginx尝试在/home/ubuntu/apps/admin/admin/下查找文件,这个路径不存在,因此触发默认页面。
问题2:try_files的回退路径缺少前缀
Angular是单页应用,刷新或直接访问子路由时需要回退到index.html,但你的try_files最后使用/index.html,会让Nginx去默认root路径(通常是/usr/share/nginx/html)找文件,而非对应应用的index.html。
修正后的完整配置
server { listen 80 default_server; listen [::]:80 default_server; server_name _; # 路由admin应用 location /admin { root /home/ubuntu/apps/; # 上级路径,Nginx会自动拼接为/home/ubuntu/apps/admin/ index index.html; try_files $uri $uri/ /admin/index.html?$args; # 回退路径带上/admin前缀 } # 路由client应用 location /client { root /home/ubuntu/apps/; # 同理,指向包含client目录的上级路径 index index.html; try_files $uri $uri/ /client/index.html?$args; # 回退路径带上/client前缀 } # 可选:处理根路径访问(比如跳转到client或返回404) location / { return 302 /client; # 也可以设置为 return 404; } }
验证步骤
- 检查配置语法是否合法:
sudo nginx -t - 重启Nginx使配置生效:
sudo systemctl restart nginx - 测试访问
http://example.com/admin和http://example.com/client,应该能正常加载对应Angular应用。
内容的提问来源于stack exchange,提问作者Mensur
相关产品推荐
相关产品推荐

