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

news2024/11/15 19:42:50

目录

  • 问题描述
    • 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"

由上可以发现,在访问时,请求的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"

总结

  • Nginx中,location内的配置是独立的,不同location不共享配置。
  • 如果需要设置缓存:
    • 要么在原location中直接设置
    • 要么在新location中重制定root
    • 要么直接在server下写root

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1789028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地Django项目切换使用Python虚拟环境

本地Django项目切换使用Python虚拟环境 之前项目开发时,没有使用虚拟环境。导致现在需要上线导出三方模块比较杂乱,于是想着先在本地通过虚拟环境运行起来,之后再导出三方模块(requirements.txt) 首先在Pychram中查看…

QT开源 串口调式工具

都是基础的代码不详细解释,代码比较多福利链接

微前端基于qiankun微前端应用间通信方案实践

【qiankunvue】微前端子应用之间的通信方式总结 ------------------------------------------------------------------补充--------------------------------------------------------- 什么是微前端? 微前端 微前端是一种多个团队通过独立发布功能的方式来共同构…

【云原生 | 60】Docker中通过docker-compose部署kafka集群

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

如何生成PDF二维码?扫码就能查看文件内容

在现代科技发展的浪潮中,二维码已经成为了信息传递的主要工具之一,被广泛应用在企业办公、产品包装、教育教学等多中场景里,发挥着重要的作用。今天一起来看看究竟如何制作一个PDF文件二维码吧? 扫码后就可以立即查看PDF文件内容…

Virtualbox 安装 ubuntu + qemu

0. 前言 关于 Virualbox 安装虚拟机的优秀文章太多了,笔者主要是着重梳理一些安装小细节,利己利人!! 如果需要保姆式的安装教程,可以查看后续的参考链接。 1. VirtualBox 的安装 直接去官网搜索最近的软件即可&…

【C++】list的使用(上)

🔥个人主页: Forcible Bug Maker 🔥专栏: STL || C 目录 前言🌈关于list🔥默认成员函数构造函数(constructor)析构函数(destructor)赋值运算符重载 &#x1…

一文读懂筛选控件设计

​筛选的作用是缩小展示范围,筛选控件有时会用于“频道切换”。比如内容型或电商产品,用tab切换不同频道,每个频道内有自己的形态。 而到了 B 端产品,如一个 CRM 系统当中,筛选的逻辑比移动端的复杂,有&…

【qt15】windeployqt 安装依赖

debug模式vs可以使用qt插件新建qt文件 D:\Qt15\5.15.2\msvc2019\bin\windeployqt.exe Warning: Cannot find Visual Studio installation directory, VCINSTALLDIR is not set.D:\Qt15\5.15.2\msvc2019\bin\windeployqt.exe .\filecopier.exeWindows PowerShell Copyright (C) …

【成品论文】2024年数学建模国赛B题成品论文分享(点个关注,后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的蓝色字体链接,那是获取资料的入口! 点击链接加入群聊【2024国赛资料合集】:http://qm.qq.com/cgi-bin/qm/qr?_wv1027&kCe9u9pqQeBrMHgupi-R078l9TuU0RwSl&authKeyRjsYS3Piiw…

Flutter开发效率提升1000%,Flutter Quick教程之定义Api(三)

将tab键切换到Response,会出现这么一个界面 这是添加api返回的json数据。比如我们添加一个json数据。 添加完json数据后,右上角有一个删除按钮。要换json数据的话,可以点击清除再重新输入。 这时候,左边的面板上还会显示出 这个的…

代理记账公司的五大问题及其解决方案

代理记账公司是现代企业管理中不可或缺的一部分,它为企业的日常运营提供了专业、高效的服务,随着行业的发展和竞争的加剧,代理记账公司的面临的问题也日益突出,这些问题主要表现在以下几个方面: 业务流程不规范 许多代…

CodeBlocks官方主题颜色更换及方法

文章目录 一、前言二 、用工具导入配置文件2.1 运行 cb_share_config.exe文件2.2 替换文件2.3 设置主题 三、配置主题3.1 步骤13.2 步骤23.3 步骤3 四、设置光标4.1 配置字体4.2 展示 行号 五、设置左边行号区域部分六、设置完后的效果七、下载地址 一、前言 Codeblocks 默认的…

【全开源】同城跑腿系统源码小程序(FastAdmin+ThinkPHP+Uniapp)

让生活更便捷的一站式服务 一款基于FastAdminThinkPHPUniapp开发的同城跑腿小程序,支持帮取、帮送模式,包含用户端、骑手端、运营后台,支持一键接单/抢单, 为跑腿团队提供技术解决方案,无加密源码,可私有化…

.Net 基于.Net8开发的一个Asp.Net Core Webapi后端框架

1.项目结构 该项目是基于.net8开发的Asp.Net Core WebApi后端服务,集成了Efcore,Autofac,Jwt,AutoMapper,Serilog,Quartz,MiniExcel等组件。该框架简单易上手,没有额外的学习成本; 该项目采用了多层结构设计,有利于解耦,包含公共层&#xff0…

AI绘画SD入门教程:ControlNet篇-Canny边缘检测预处理器

大家好,我是向阳 在本篇中,我来讲讲如何使用预处理器和辅助模型,分别都有些什么作用。 💡 这里说明一下当你调用预处理器而辅助模型显示为无的几种原因: 当已载入SD1.5的模型时,CannyXL的辅助模型不会显示…

ch5链路层和局域网

回顾TCP/IP参考模型,明确链路层和物理层在整个模型中的地位,简要提出链路层要解决的问题是单段链路的数据传输,物理层解决的是数字信号与电气信号之间的相互转换。 链路层概述 节点:主机和路由器(包括网桥和交换机) 链路:沿着通信路径连接相邻节点的通信信道 有线链路 无…

Redis缓存(笔记一:缓存介绍和数据库启动)

目录 1、NoSQL数据库简介 2、Redis介绍 3、Redis(win系统、linux系统中操作) 3.1 win版本Redis启动 3.2 linux版本Redis启动 1、NoSQL数据库简介 技术的分类:(发展史) 1、解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、…

【面试干货】什么是内连接、外连接、交叉连结、笛卡尔积?

【面试干货】什么是内连接、外连接、交叉连结、笛卡尔积? 1、内连接(Inner Join)2、左外连接(Left Outer Join)3、右外连接(Right Outer Join)4、全外连接(Full Outer Join&#xff…

被斯坦福抄作业了?在线体验下:国产大模型确实越来越棒啦!

抄袭? 这里不做评价了: 官方仓库 地址:miniCPM-Llama3-V-2_5 免费在线体验地址 链接:Llama3-V-2_5 模型能力: 模型实际体验 问他什么模型:(可能用了它的数据集吧) 图片分析…