You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 8.x路由搭配Nginx location部署:页面刷新报错求助

解决Angular子路径部署Nginx时刷新页面404的问题

我之前在部署Angular应用到Nginx子路径时也踩过这个一模一样的坑,一眼就看出问题所在了——你的try_files指令里的/index.html路径写错啦!

问题根源

当你用alias把/dashboard映射到/home/user/my-dashboard时,try_files里的/index.html是相对于Nginx的root路径(也就是/home/user/)去查找的,而你的Angular入口文件明明在/home/user/my-dashboard/下面,刷新时自然找不到对应文件。

修正后的Nginx配置

直接把try_files里的/index.html改成/dashboard/index.html就行,修改后的完整配置:

server {
 listen 443 ssl;
 listen [::]:443;
 root /home/user/;
 server_name sub.tld.com;
 ssl_certificate /path...;
 ssl_certificate_key /path...;

 location / {
  proxy_pass http://localhost:10020/;
 }

 location ^~/dashboard {
  alias /home/user/my-dashboard;
  try_files $uri $uri/ /dashboard/index.html; # 这里是关键修改
  index index.html;
 }
}

更稳妥的重写方案(适配多层嵌套路由)

如果你的Angular应用有多层嵌套路由(比如/dashboard/settings/profile),用if+rewrite的方式会更可靠,能确保所有不存在的文件请求都转发到入口文件:

location ^~/dashboard {
 alias /home/user/my-dashboard;
 index index.html;
 # 仅当请求的文件/目录不存在时,重写到入口文件
 if (!-e $request_filename) {
  rewrite ^/dashboard/(.*)$ /dashboard/index.html last;
 }
}

别忘了Angular构建时的基础路径

最后提醒一句,构建Angular应用时一定要指定base-href,不然静态资源加载和路由都会出问题:

ng build --prod --base-href /dashboard/

这个参数会让Angular生成的所有资源引用和路由都基于/dashboard/路径,和Nginx的配置完全对应上。

内容的提问来源于stack exchange,提问作者hGen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:22:53