尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Nginx 缓存调优:从 100% MISS 到 90% HIT
背景监控大屏用 Nginx 反代两个 Flask 实例开了 proxy_cache 想减轻后端压力。配置看起来没问题响应头也有 X-Cache-Status。但连续 curl 十次结果全是10 MISS缓存目录里只有 1 个文件基本等于没生效。想做到让缓存真正命中。原因第一步看响应头$curl-k-s-D--o/dev/null https://example.com:8443/|grep-icache cache-control: no-cache x-cache-status: MISS第二步直连后端看原始响应$curl-s-D--o/dev/null http://127.0.0.1:5001/ HTTP/1.1200OK Cache-Control: no-cache根因后端返回了 Cache-Control: no-cache。Nginx 默认尊重上游的 Cache-Control——上游说别缓存Nginx 就真不缓存。就像你在货架上贴了「欢迎放商品」但供应商送货时贴了张纸条「此商品不得上架」。店员只能照办货架空着。解决一、让 Nginx 忽略上游的 Cache-Controllocation /{proxy_cache my_cache;# 关键忽略上游的 Cache-Control 和 Expires proxy_ignore_headers Cache-Control Expires;proxy_cache_valid 200 302 5m;proxy_cache_valid 404 1m;add_header X-Cache-Status $upstream_cache_status always;proxy_passhttp://backend_cluster;}只忽略这两个别一股脑全忽略响应头是否忽略原因Cache-Control✅ 忽略上游默认带 no-cache会阻止缓存Expires✅ 忽略和 Cache-Control 配套Set-Cookie❌ 不忽略忽略会串号Vary❌ 不忽略忽略会破坏多版本缓存二、固定 proxy_cache_keyproxy_cache_key $scheme$request_method$host$request_uri;排除 $args 和 cookie 干扰同一个 URL 共用一份缓存。副作用如果页面按 cookie 分版本就不能这么做。我这里是内部大屏可以接受。三、加 proxy_cache_lock 防击穿proxy_cache_lock on; proxy_cache_lock_timeout 5s;货架上的牛奶卖完了10 个顾客同时冲进仓库。加锁 只让第一个人进后面的人等在门口。四、后端抖了用过期缓存顶一下可选proxy_cache_use_stale updating error timeout http_500 http_502 http_503 http_504; proxy_cache_background_update on;完整配置location /{proxy_cache my_cache;proxy_cache_key$scheme$request_method$host$request_uri;proxy_ignore_headers Cache-Control Expires;proxy_cache_valid 200 302 5m;proxy_cache_valid 404 1m;proxy_cache_lock on;proxy_cache_lock_timeout 5s;proxy_cache_use_stale updating error timeout http_500 http_502 http_503 http_504;proxy_cache_background_update on;add_header X-Cache-Status $upstream_cache_status always;proxy_passhttp://backend_cluster;}sudonginx-tsudosystemctl reload nginx验证效果$foriin{1..10};docurl-k-s-o/dev/null-D- https://example.com:8443/\|awk-F: tolower($1)x-cache-status{print $2}sleep0.2done|sort|uniq-c1MISS9HIT9 HIT / 1 MISS命中率 90%。项目优化前优化后命中率0%~90%回源次数10 次101响应时间取决于后端命中时几乎为 0三个坑坑 1以为开了 proxy_cache 就会缓存上游可以返回这些头让 Nginx 放弃缓存响应头含义Cache-Control: no-cache每次都校验Cache-Control: no-store完全禁止Cache-Control: private只允许浏览器缓存Set-Cookie默认不缓存坑 2proxy_cache_key 忘了固定默认 key 里如果带了 ?timestampxxx 或 cookie每次请求都是新 key缓存命中率永远上不去。正确做法显式写 proxy_cache_key只留真正影响内容的部分。坑 3X-Cache-Status 加了但日志里看不到add_header 只是返回给客户端日志统计要单独配# 在 http 块里定义必须放 conf.d/不能放 server log_format cache_tsv $time_iso8601\t$host\t$request_method\t$request_uri\t$status\t$upstream_cache_status; # 在 server 块里启用 server { listen 8081; access_log /var/log/nginx/dashboard_cache.log cache_tsv; }注意\t 是字面反斜杠 tNginx 自己解释成制表符。写 heredoc 时用单引号 ‘EOF’否则 shell 会展开。还有只有配了 proxy_cache 的那层 Nginx 才有 HIT/MISS外层反代的 $upstream_cache_status 是 -。生活小插曲最近我开始写小说了名字就不说了等有一定流量再宣传。
RELATED

相关推荐

从零训练YOLOv8罐装饮料识别模型:数据集体检、标注清洗与训练调参实战

从零训练YOLOv8罐装饮料识别模型:数据集体检、标注清洗与训练调参实战

简介:面向计算机视觉入门与进阶学习者,这份罐装饮料识别数据集涵盖一千多张真实场景图片,并提供YOLOv8格式的标注文件,可支持薯片、东鹏特饮、红牛、芬达、养乐多、可乐、雪碧、王老吉、AD钙奶、金典、特仑苏、蒙牛、伊利、旺仔牛…

📅 2026/10/11 6:35:44
YOLOv9 + Triton 部署实战:从 ONNX 导出到生产级推理服务

YOLOv9 + Triton 部署实战:从 ONNX 导出到生产级推理服务

简介:本资源是一套面向AI算法工程师与深度学习部署实践者的YOLOv9目标检测模型生产级部署方案,聚焦Triton Inference Server在工业场景中的落地应用,解决模型从训练到服务化推理的关键断点问题。压缩包共16个文件,含7个核心Python…

📅 2026/10/11 6:30:44
从极简命名到工程落地:轻量级自动化工具的设计与实现

从极简命名到工程落地:轻量级自动化工具的设计与实现

1. 从“rea”这个标题说起:一个极简命名背后的完整项目思维第一次看到“rea”这个标题的时候,我脑子里蹦出来的第一反应是——这大概率又是一个被压缩到极致的项目代号。做技术的人都有这个习惯,项目名越短越好,短到外人完全看不懂…

📅 2026/10/11 6:30:44
MORE NEWS

更多资讯

📰

TongWeb集中管理文件名乱码排查:LANG环境变量与JVM字符集链路解析

上周处理了一个挺典型的中间件现场问题:客户反馈TongWeb集中管理平台上,通过控制台上传的部署包和配置文件,文件名在管理界面里变成了一串乱码,服务器上实际落盘的文件名也是乱的。排到后面发现根子不在TongWeb本身,而…

📰

明明DLL就在眼前却找不到?一文讲透Windows加载机制与排查修复

一开始先把结论说在前面:这个"明明 DLL 就在眼前,却说找不到"的报错,九成以上根本不是文件丢了,而是 Windows 在加载动态链接库的路上卡住了。卡住的环节千奇百怪,但排查思路高度统一。我干了十来年 Windows…

📰

Spring Boot+Vue图书馆座位预约系统设计与实现:信用分与并发控制实践

1. 项目概述与核心需求拆解1.1 为什么需要一个座位预约系统高校图书馆的占座问题几乎是每个学校都绕不开的痛点。早八点抢座、书包装座位、人走书留一整天,这些场景我相信每个经历过图书馆生活的人都不陌生。我自己在学校做过一段时间的信息化项目支持,接…

📰

解决Claude Code会话失忆:claude-mem自动记忆工具完整指南

如果你正在重度使用 Claude Code 这个命令行 AI 编程工具,大概率碰到过同一个让人抓狂的问题:聊到一半它开始忘记项目里的结构约定,隔了一天再打开终端,上次会话里好不容易对齐的技术方案它一个字都不记得。我大概是在做某跨平台系…

📰

从模糊题目到完整工程:自研服务编排框架OSOF全复盘

上周日晚上,教务群跳出来一条消息:“OSOF综合实验,请抓紧完成框架设计、源码和测试报告,周五答辩。”没有需求文档,没有验收标准,连这个缩写具体指什么都不解释。我盯着屏幕翻了十分钟热搜,搜出…

📰

基于深度学习的图像隐写分析系统:从残差图到GUI部署全解析

简介:这是一份基于深度学习的图像隐写分析项目源码与论文资料包,面向计算机、通信、人工智能等专业学生、教师及从业者,适合用于课程设计、毕业设计或进阶学习。项目实现隐写分析与隐写去除两大功能,分别采用SRNet网络模型与DDSP网…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬