问题
只有访问首页或者通过项目自己的路由跳转时正常,在非根目录下点击浏览器刷新时会出现 nginx 404 的情况。
配置
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
location / {
root /home/tars/dist;
index index.html;
}
location /api {
# 接口要代理到的服务器
proxy_pass http://127.0.0.1:7001;
}
}
原因
因为 spa 单页面项目只有一个 html 文件,nginx 找不到你访问的文件路径
解决
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
location / {
root /home/tars/dist;
index index.html;
# 增加这一行,用于在找不到访问的文件路径时,尝试在硬盘中寻找此路径下的 html 文件
try_files $uri $uri/ /index.html;
}
location /api {
# 接口要代理到的服务器
proxy_pass http://127.0.0.1:7001;
}
}