首页 > 系统相关 >Nginx设置缓存后,访问网页404 问题原因及解决方案(随手记)

Nginx设置缓存后,访问网页404 问题原因及解决方案(随手记)

时间:2024-06-16 17:43:00浏览次数:16  
标签:index 缓存 html Nginx 404 location root

原文链接:Nginx设置缓存后,访问网页404 问题原因及解决方案(随手记)_nginx的html文件地址修改后404-CSDN博客

 

目录
问题描述
Nginx文件
解决方案
查看error_log日志
问题原因
修改文件并测试
Nginx文件
测试
总结
问题描述
在Nginx中设置缓存expires后,结果重启nginx,网站访问404了。

Nginx文件
server {
listen 80;
server_name bird.test.com;
location / {
root /app/code/bird/;
index index.html;
}
#uri 包含 html、js、css 结尾的文件缓存一天
#~* 后支持正则表达式
location ~* \.(html|js|css)$ {
expires 1d;
}
location ~* \.(jpg|jpeg|png|gif|bmp)$ {
expires 1h;
}
}


解决方案
查看error_log日志
2024/06/05 00:00:17 [error] 3189#3189: *1 open() "/etc/nginx/html/index.html" failed (2: No such file or directory), client: 192.168.100.1, server: bird.test.com, request: "GET /index.html HTTP/1.1", host: "bird.test.com"
1
由上可以发现,在访问时,请求的URI是/etc/nginx/html/index.html,而不是在 location中指定的root /app/code/bird/index.html。

问题原因
Nginx中location模块是独立的,因此在不同的locaiton中,root不共享。
在Nginx子配置文件中,我将root语句写在location内,再新建location写expires后,这两个location其实并不是一个。
因此在匹配到正则的.html后,访问了默认的nginx路径,导致文件不存在。
修改文件并测试
Nginx文件
server {
listen 80;
server_name bird.test.com;
root /app/code/bird/; # 每个location区域都是独立的,如果root写在location内,则在指定缓存时的location中也要添加上root
location / {
index index.html;
}
#uri 包含 html、js、css 结尾的文件缓存一天
#~* 后支持正则表达式
location ~* \.(html|js|css)$ {
expires 1d;
}
location ~* \.(jpg|jpeg|png|gif|bmp)$ {
expires 1h;
}
}

 


缓存设置成功。

日志:
192.168.100.1 - - [05/Jun/2024:00:11:15 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
1
总结
Nginx中,location内的配置是独立的,不同location不共享配置。
如果需要设置缓存:
要么在原location中直接设置
要么在新location中重制定root
要么直接在server下写root。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/Tassel_YUE/article/details/139456859

标签:index,缓存,html,Nginx,404,location,root
From: https://www.cnblogs.com/ZhYQ-Note/p/18250975

相关文章

  • redis常用5种数据类型及其常见问题(缓存穿透,缓存击穿,缓存雪崩)
    1.字符串(String)2.哈希(hash):redishash是一个string类型的字段和value的映射表,hash特别适合存储对象3.列表(List):字符串列表,按照插入的顺序。可以添加一个元素到列表的头部或尾部4.集合(set):String类型的无序集合。集合成员不可重复,redis中集合通过哈希表实现的,添加,删除,查找复杂度......
  • MyBatis 的缓存机制
    1.MyBatis的缓存机制@目录1.MyBatis的缓存机制2.准备工作3.MyBatis的一级缓存3.1一级缓存失效情况/条件4.MyBatis的二级缓存5.MyBatis集成EhCache第三方缓存6.总结:7.最后:缓存(Cache)缓存的作用:通过减少IO的方式,来提高程序的执行效率。MyBatis的缓存:将Sele......
  • 游戏缓存与异步持久化的完美邂逅
    1、问题提出游戏服务器,需要频繁的读取玩家数据,同时也需求频发修改玩家数据,并持久化到数据库。为了提高游戏服务器的性能,我们应该怎么处理呢?2、应用程序缓存缓存,是指应用程序从数据库读取完数据之后,就将数据缓存在进程内存或第三方内存(例如redis)。游戏服务器对于玩家数据的读......
  • goaccess分析nginx日志详解
    goaccess version:1.9安装方式:源文件makemakeinstall 执行环境:cli完整access.log:192.168.1.3:16423|240e:42c:1b30:111:b4c1:49ff:fe49:392c,113.96.59.2114/Jun/2024:00:01:15+0800HTTP/1.0GEThttp://www.baidu.com/yl/ysj/dsj/folder1088/?imageView/......
  • 数据库连接池、flask定制命令、flask-cache缓存、信号
    flask操作mysql1fromflaskimportFlask,jsonify2importpymysql34app=Flask(__name__)5app.debug=True67#拿到mysql链接对象8conn=pymysql.connect(host='127.0.0.1',user='root',password='199721',database=&......
  • spring-2-依赖注入、循环依赖、三级缓存
    参考:SpringBoot———自动装配原理Spring依赖注入有几种?各有什么优缺点?Spring注解@Resource和@Autowired区别Spring是如何解决循环依赖问题?第二次讲Spring循环依赖,时长16分钟,我保证每一秒都是精华1.依赖注入1.1依赖注入的方式方式优点缺点适用场景属性注入......
  • Linux下Nginx安装并开启SSL
    Linux下Nginx安装并开启SSL一.下载nginxNginxdownload下载后上传至服务器。PS:博主使用的Nginx版本为:nginx-1.23.4.tar.gz二.安装Nginx所需要的环境1.安装gcc-c++yuminstallgcc-c++yuminstall-yopensslopenssl-devel2.安装pcre包yuminstall-ypcrepcre......
  • nginx入门与实践
    当谈到NGINX的入门与实践时,理解基本概念并能够应用实际场景非常重要。NGINX是一个高性能的HTTP和反向代理服务器,也可用作负载均衡器和HTTP缓存。以下是一些入门级别的NGINX实践和代码示例,帮助你开始学习和使用它。1.安装和基本配置安装NGINX首先,你需要安装NGINX。具体安......
  • 生产环境Nginx服务器双机热备部署以及配置内网域名转发
    10.0.0.8和10.0.0.9部署nginx:第一步:上传安装包第二步:安装编译依赖(使用普通用户需要家sudo)yuminstallgccgcc-c++yuminstallzlibzlib-develyuminstallpcrepcre-develyuminstallopenssllibssl-dev第三步:解压,编译安装:解压命令:sudotar-zxvfnginx-1.24.0.tar.g......
  • 1对1视频聊天源码,优化后的缓存使用效果更好
    1对1视频聊天源码,优化后的缓存使用效果更好缓存是提升1对1视频聊天源码的有效方法之一,尤其是用户受限于网速的情况下,可以提升系统的响应能力,降低网络的消耗。当然,内容越接近于用户,则缓存的速度就会越快,缓存的有效性则会越高。不过,在1对1视频聊天源码的某些特定场景下缓存还需......