前言
刚入职一家新公司,项目还没有部署到服务器上,昨天部署好了,但是自己发现一个问题,就是面试题常见的 history 路由跳转之后刷新页面之后会 404,然后很简单的通过配置 nginx 解决了,记录一下
查看 nginx 配置文件在哪
whereis nginx
// 输出
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
发现有多个目录,只能一个目录一个目录进去找了,在 /etc/nginx/nginx.conf 里找到了,但是发现这个 nginx 的配置并不像服务的配置,因为使用的是 https 的协议,然后在 /etc/nginx/conf.d 目录里找到了 www.conf 配置文件。
修改 nginx 配置文件
建议修改 nginx 配置文件的时候先备份一份老的配置下来,以免有问题能及时回退; 备份命令 eg:
cp nginx.conf nginx_bak.conf
; 我是直接下载到我本地了。我这里是按照 vue 官方文档来修改的,详情
location / {
#root html; #Web网站程序存放目录。
index index.html index.htm;
}
修改成
location / {
# 解决 history 路由跳转刷新页面 404
try_files $uri $uri/ /index.html;
#root html; #Web网站程序存放目录。
index index.html index.htm;
}
重启 nginx
修改了 nginx 配置之后还需要重启 nginx 服务才能生效;
1. 方法一重启:
直接执行 nginx -s reload
或者进入nginx安装目录sbin下,输入命令./nginx -s reload 即可;
查找 nginx 的可执 sbin 目录:
nginx -V
查看命令输出的东西: configure arguments: --prefix=“安装路径” --sbin-path=“sbin文件的路径”
cd /usr/local/nginx/sbin
./nginx -s reload
我没有在服务器上找到 --sbin-path,也就是nginx 的 sbin 目录,使用的是下面第二种方法
2. 方法二重启:
通过进程 pid 的方式重启,查找当前 nginx 的进程号:ps -ef|grep nginx
重启主进程 master process 就可以了: kill -hup pid