Nginx代理vue项目,点击浏览器刷新报404
问题描述
提示:nginx代理一个vue2.X的项目,正常流程访问无异常,在浏览器地址栏手动访问地址或者点击浏览器自带的刷新按钮,则会报404
原因分析:
当时用的是 若依的前后端分离版
,我开始怀疑出现这种情况可能是若依框架前端的防爬虫机制造成的!于是我访问了若依的在线预览,并未发现这个问题,于是pass了这一观点。
当我看了nginx日志之后,我惊呆了,404?什么情况?
大概意思就是nginx找不到你访问的内容,因为nginx只能找到index.html这一个文件
那为啥正常的页面间的访问可以找到?因为那是vue的路由配合页面组件去完成的
比如vue的项目浏览器地址域名后面都会跟一个#号。
解决方案:
知道问题所在之后就好处理了
我们只需在配置中加上try_files,意思跟翻译差不多,“尝试读取文件”。我个人的理解是:只要访问的是这个index.html,你都直接返回index.html,具体是哪个页面,交给vue来处理
location / {
try_files $uri $uri/ /index.html;
}