Skip to main content

nginx代理后刷新显示404

我们在用nginx部署时候完项目会出现页面刷新会404,而页面上点击跳转(一般比如点击菜单)页面则不会404,为什么呢,因为你没在nginx配置上面加上重定向跳转。

解决方案1:

  • nginx.conf
server {
listen YYYY; //自己设置的端口号
server_name 192.168.XXX.XXX; //在黑窗口下ipconifg后出现的IPv4地址复制

location /{
root E:/website_wap/dist/; //项目打包后的路径
index index.html index.htm;
try_files $uri $uri/ /index.html; //解决刷新页面变成404问题的代码
}
}

这句配置的意思是每次匹配url路径时候找不到对应静态资源时候调制跳转到index.html文件

uri这个是nginx的一个变量,存放着用户访问的地址:

  • 例如http://localhost:8200/chooseSize那么uri这个是nginx的一个变量,存放着用户访问的地址,
  • 例如http://localhost:8200/chooseSize那么uri就是/chooseSize;uri/代表访问的是一个目录
  • 例如http://localhost:8200/chooseSize/那么uri/代表访问的是一个目录
  • 例如http://localhost:8200/chooseSize/那么uri/就是/chooseSize/;最后/index.html就是我们首页的地址。

最终上面的意思是如果第一个存在,直接返回;不存在的话读取第二个,如果存在,读取返回;如果还是不存在,就会fallback到try_files的最后一个选项/index.html,发起一个内部“子请求”,也就是相当于nginx发起一个HTTP请求到http://localhost:8200/index.html,再通过前端路由到/chooseSize。

参阅资料