千家信息网

Nginx如何启用proxy_cache缓存

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,这篇文章主要介绍了Nginx如何启用proxy_cache缓存,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。proxy_cache 在
千家信息网最后更新 2025年02月07日Nginx如何启用proxy_cache缓存

这篇文章主要介绍了Nginx如何启用proxy_cache缓存,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

proxy_cache 在 Nginx 配置的 http 段、server 段(location 段)中分别写入不同的配置。http 段中的配置用于定义 proxy_cache 空间,server 段中的配置用于调用 http 段中的定义,启用对 server 的缓存功能。

http 段

直接以本站的配置为例:

proxy_cache_path  /home/nginx/proxy_cache/cache levels=1:2 keys_zone=proxycache:60m max_size=120m inactive=2h use_temp_path=on;proxy_temp_path    /home/nginx/proxy_cache/temp;proxy_cache_key    $host$request_uri;

其中:

proxy_cache_path

  1. /home/nginx/proxy_cache/cache:定义 proxy_cache 生成文件的根路径

  2. levels:默认所有缓存文件都放在上面指定的根路径中,从而可能影响缓存的性能。推荐指定为 2 级目录来存储缓存文件

  3. key_zone:这个的值是字符串,可以随意写。用于在共享内存中定义一块存储区域来存放缓存的 key 和 metadata(类似于使用次数),这样 nginx 可以快速判断一个 request 是否命中缓存。1m 可以存储 8000 个key

  4. max_size:最大 cache 空间。如果不指定,会使用掉所有 disk space。当达到 disk 上限后,会删除最少使用的 cache

  5. inactive:内存中缓存的过期检查周期。示例配置中如果 2h 内都没有被访问,则不论状态是否为 expired,都会清除缓存。需要注意的是,inactive 和 expired 配置项的含义是不同的,expired 只是判断过期时间,不会删除缓存;而 inactive 是直接删除过期缓存

  6. use_temp_path:如果为 off,则 nginx 会将缓存文件直接写入指定的 cache 文件中,而不使用 temp_path 指定的临时存储路径

proxy_temp_path

  1. /home/nginx/proxy_cache/temp:定义 proxy_cache 生成临时文件的根路径。此项在 use_temp_path=off 时不需填写

proxy_cache_key

  1. $host$request_uri:定义 proxy_cache 生成文件的名称。值可以为 Nginx 支持的变量和字符串

server 段

同样以本站配置为例进行说明:

proxy_cache          proxycache;proxy_cache_valid      304 2h;proxy_cache_valid      403 444 24h;proxy_cache_valid      404 2h;proxy_cache_valid      500 502 2h;proxy_cache_use_stale    invalid_header http_403 http_404 http_500 http_502;proxy_cache_lock      on;proxy_cache_lock_timeout  5s;proxy_no_cache        $proxynocache_atomxml $proxynocache_sitemapxml;
  1. proxy_cache:对应 http 段的 key_zone,是你定义的 proxy_cache 所使用的共享空间的名称。我在上面示例中使用的名称是"proxycache"

  2. proxy_cache_valid:对指定的 HTTP 状态进行缓存,并指定缓存时间。可以自定义写入多个配置项

  3. proxy_cache_stale:这个可以大大减少回源次数。因此可以将 inactive 适当延长

  4. proxy_cache_lock:同样是减少回源次数。和上面的差别在于缓存是否存在

  5. proxy_no_cache:值为若干个变量($string),这个变量的值只有俩类,0 和 非0,这若干个变量中只要有一个值不为 0,就不会触发缓存

我的一点经验

  1. 会在你指定的缓存路径下生成类似 "0 1 2 3 4 5 6 7 8 9 a b c d e f …" 这样的文件夹(当 levels=2 时),这些文件夹下存储着写入硬盘的缓存文件

  2. proxy_cache_valid 缓存的状态码需要根据你的需要来定义,千万别把 200 写进去了

  3. inactive 时间和 valid 时间需要特别注意,如果源站更新频率不怎么低,就需要根据你的需求减少这些值

  4. proxy_no_cache 中使用的 $string 是通过类似 "set $string 1;" 来定义的

  5. proxy_cache_use_stale 和 proxy_cache_lock 的用法目前我也没太明白,所以解释得不太清晰,望见谅。这俩配置一般不使用也无妨

感谢你能够认真阅读完这篇文章,希望小编分享的"Nginx如何启用proxy_cache缓存"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

缓存 文件 配置 路径 存储 变量 时间 篇文章 生成 名称 次数 状态 空间 不同 内存 字符 字符串 文件夹 示例 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 统一软件开发设施推广 怎么进入服务器并安装远程工具 图数据库适合 网络安全周宣传费用 广州优盛网络技术有限公司 csgo经常与服务器断开连接 一个局域网至少需要有几个服务器 如何搭建我的世界空岛服务器 幼儿园网络安全日活动美篇 网络安全法安全监管机构 统计局网络安全责任制实施办法 信息网络技术一体化作战力量 服务器内存条是否支持win10 sql数据库表中增加一个人 软件开发阶乘 广东校园的服务器地址 我是网络安全宣传员手抄报带字 工行密码服务器怎么用 军队网络安全问题讨论 无线通信网络安全折线图 奇迹开收费服务器 软件系统与数据库连接 汽车产品软件开发公司有哪些 宁波最好的软件开发公司 数据库dll 如何连接 智慧门禁软件开发机构 数据库怎么求ytd 浙江常见软件开发费用 信息网络技术一体化作战力量 sql数据库丢失
0