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配置并兼容HTTP实现代码解析
Mar 31 Servers
Nginx反爬虫策略,防止UA抓取网站
Mar 31 Servers
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
Apr 04 Servers
nginx作grpc的反向代理踩坑总结
Jul 07 Servers
nginx容器方式反向代理实战
Apr 18 Servers
Windows server 2012 R2 安装IIS服务器
Apr 29 Servers
鲲鹏 CentOS 7 安装Python3.7
May 11 Servers
详解ZABBIX监控ESXI主机的问题
Jun 21 Servers
vscode远程免密登入Linux服务器的配置方法
Jun 28 Servers
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
Jul 15 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
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
php数组去重的函数代码
2013/02/03 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
PHP结合jQuery实现找回密码
2015/07/22 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
javascript new 需不需要继续使用
2009/07/02 Javascript
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
electron demo项目npm install安装失败的解决方法
2018/02/06 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
JavaScript canvas实现雨滴特效
2021/01/10 Javascript
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Python实现新型冠状病毒传播模型及预测代码实例
2020/02/05 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
红领巾心向党广播稿
2014/01/19 职场文书
红楼梦读书笔记
2015/06/25 职场文书
python3操作redis实现List列表实例
2021/08/04 Python
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang