Nginx报404错误的详细解决方法


Posted in Servers onJuly 23, 2022

近日在部署项目时,出现了一些问题,如图

Nginx报404错误的详细解决方法

正常的登录界面是可以访问的,但是在登录之后访问之后的地址会报404错误,于是去查看是否配置有错误,但是查看之后发现,nginx.confconfig.js两个配置文件的ip和端口都是没有错误的

这个项目部署过好多次,没有出现过这样的错误。

这是原版没动过的解压缩后的nginx.conf的源文件

Nginx报404错误的详细解决方法

圈起来的地方是应该按照项目配置对应的ip和监听的端口

listen对应的是端口,server_name对应的是访问的ip

但是这样是不能解决问题,我们需要添加如下的一句话

try_files $uri $uri/ /index.html;

添加的位置应当在这里

Nginx报404错误的详细解决方法

server下的location段里添加,此时再重新启动nginx就可以了

nginx.exe所在的目录内,点击地址栏,输入cmd,可直接在该目录下启动命令行,无需打开cmd后再跳转目录。

若之前没有关闭nginx服务,先停止再打开,如果已关闭,可以直接输入启动服务的命令

停止nginx服务命令:

nginx -s stop

 启动nginx服务命令:

start nginx

热部署nignx服务命令:

(但是不推荐使用这个命令,这个命令有时候是不起作用的,不如直接停了再启动)

nginx -s reload

重新启动nginx后,浏览器最好是清除缓存后再进行测试

可以直接在浏览器窗口按

Ctrl+Shift+Del

可直接打开清除缓存的对话框

重新测试,可以正常访问了

Nginx报404错误的详细解决方法

第一次写经验分享贴,如有不足之处,请大家提出 

补充:Nginx部署之后正常点击没问题,刷新页面会出现404问题的解决

项目部署到服务器后 ,根路径访问没有问题(http:10.10.10.10),但是进入其他功能再刷新页面就会出现404,比如

http:10.10.10.10/test/test/test 刷新页面就会出现404,因为你没在nginx配置上面加上重定向跳转。

解决办法,只需要加上这段配置:

try_files $uri $uri/ /index.html;

server {
    listen 80;
    server_name 127.0.0.1;
	
	location / {
		root /data/htdocs/FactoryModel/micro-front-end/industrial-internet-platform-main-vue;
		index index.php index.html index.htm;
		# add_header Cache-Control;
		add_header Access-Control-Allow-Origin *;
		if ( $request_uri ~* ^.+.(js|css|jpg|png|gif|tif|dpg|jpeg|eot|svg|ttf|woff|json|mp4|rmvb|rm|wmv|avi|3gp)$ ){
		  add_header Cache-Control max-age=7776000;
		  add_header Access-Control-Allow-Origin *;
		}
		try_files $uri $uri/ /index.html;
	}
}

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

如图加在这里即可

下面内容需要稍微知道router路由工作原理、nginx原理

解析为什么会这样(针对路由在history模式下):

先提出问题:

1、为什么刷新页面会(没有配置情况下且不在首页根目录刷新)
2、为什么点击跳转时候会(有时)

现在来解决问题:

1、假设现在在浏览器上的url为 172.1.2.3:7000/test ,此时刷新页面时候会去根据浏览器上的url去服务器(nginx)上面请求对应的静态资源,nginx根据location / 的匹配规则在dist文件夹里没有找到对应的静态文件"test",所以返回404,合理。

此时通过配置try_files来重定向返回index.html文件,也就是回去首页“ / ”,注意,此时你的页面已经刷新过了,此时react-router或者vue-router路由发挥作用,会根据当前的url地址来对应匹配上组件,所以此时url即对应组件,页面重新加载完成,完事。

2、第二个问题,为什么点击跳转时候会而有时候不会,要知道跳转有两种情况:一种页面刷新(属于第一个问题),一种页面不刷新。这取决于你代码的书写情况,请记住:

1、push不会刷新页面,只会更改浏览器上的url路由变更,不管是react-router还是vue-router都是运用html的api实现,叫做pushState()
2、通过 会刷新页面,它相当于a标签

可自行在浏览器上面试下

Nginx报404错误的详细解决方法

所以当你点击跳转时候,有时候你代码用的是push(不刷新)、有时候用的是a标签、Link(刷新),才导致这个问题。

总结

到此这篇关于Nginx报404错误的简单解决方法的文章就介绍到这了,更多相关Nginx报错404内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

Servers 相关文章推荐
Nginx 负载均衡是什么以及该如何配置
Mar 31 Servers
Nginx的反向代理实例详解
Mar 31 Servers
windows下快速安装nginx并配置开机自启动的方法
May 11 Servers
nginx常用配置conf的示例代码详解
Mar 21 Servers
Kubernetes中Deployment的升级与回滚
Apr 01 Servers
基于Apache Hudi在Google云构建数据湖平台的思路详解
Apr 07 Servers
Nginx+Tomcat负载均衡多实例详解
Apr 11 Servers
Apache Hudi 加速传统的批处理模式
Apr 24 Servers
SpringBoot前端后端分离之Nginx服务器下载安装过程
Aug 14 Servers
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
Sep 23 Servers
码云(gitee)通过git自动同步到阿里云服务器
Dec 24 Servers
彻底卸载VMware虚拟机的超详细步骤记录
Jul 15 #Servers
windows server2016安装oracle 11g的图文教程
Jul 15 #Servers
Windows Server 2012 R2服务器安装与配置的完整步骤
Jul 15 #Servers
Windows server 2003卸载和安装IIS的图文教程
Jul 15 #Servers
本地搭建minio文件服务器(使用bat脚本启动)的方法
Jul 15 #Servers
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
Jul 15 #Servers
Apache Kafka 分区重分配的实现原理解析
You might like
解决中英文字符串长度问题函数
2007/01/16 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
PHP+FastCGI+Nginx配置PHP运行环境
2014/08/07 PHP
php上传中文文件名乱码问题处理方案
2015/02/03 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
JavaScript中继承的一些示例方法与属性参考
2010/08/07 Javascript
jquery中获取id值方法小结
2013/09/22 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
2015/11/24 Javascript
JavaScript_ECMA5数组新特性详解
2016/06/12 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
2017/02/23 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
基于jQuery实现的单行公告活动轮播效果
2017/08/23 jQuery
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
js常见遍历操作小结
2019/06/06 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[42:22]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第一局
2016/02/27 DOTA
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
详解python的数字类型变量与其方法
2016/11/20 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
Python常用类型转换实现代码实例
2020/07/28 Python
python输入中文的实例方法
2020/09/14 Python
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
创建绿色学校先进个人材料
2014/08/20 职场文书