当你在前端 Vue 项目中路由使用 createWebHistory 后,一套默认操作流程安装好nginx后,在 /etc/nginx 中找到 nginx 的配置文件,只修改端口和静态资源文件地址,重启 nginx 服务后可以在浏览器中正常访问,但当页面打开后二次刷新,网站将报错404。

环境

本人服务器上的系统:Centos8
Nginx version:nginx/1.14.1

问题描述

在安装配置好的服务器上使用Nginx部署静态网站后,一次意外不得已服务器重启,待服务器恢复运行后便无法访问部署的网站,经检查配置文件应该是丢失了被生成了一个新的配置文件,然后在修改相应的配置后,网站可以正常浏览,进行二次刷新后出现了问题,二次刷新网站直接报错404,重新打包上传静态资源问题依旧,确认网站的路由使用的history模式。

解决方法

  1. 尝试创建一个新的默认nginx.conf文件,按照需求进行修改,在启动时使用此配置文件启动,若问题解决说明原来的配置文件出现了问题;
  2. 观察配置文件中有没有使用 try_files $uri $uri/ /index.html;如下,若没有使用则会造成在二次刷新的时候出现404问题。
 server {
        listen       你的端口;
       # listen       [::]:80 default_server;
        server_name  apple_index;
        root         你的静态资源路径;
	    index index.html index.htm;
        try_files $uri $uri/ /index.html;
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
            try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

最后

讲真的,做好数据备份很重要,强制重启服务器不知道会损坏什么正在运行的服务QAQ!!! 万不得已,千万不要乱搞!