千家信息网

什么是Nginx代理缓存机制

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"什么是Nginx代理缓存机制"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. Ng
千家信息网最后更新 2026年11月01日什么是Nginx代理缓存机制

本篇内容介绍了"什么是Nginx代理缓存机制"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. Nginx 缓存简介


  • nginx 的 http_proxy 模块,可实现类似于 Squid 的缓存功能。

  • Nginx 对客户已经访问过的内容在 Nginx 服务器本地建立副本,这样在一段时间内再次访问该数据,就不需要通过 Nginx 服务器再次向后端服务器发出请求,所以能够减少 Nginx 服务器与后端服务器之间的网络流量,减轻网络拥塞,同时还能较小数据传输延迟,提高用户访问速度。

  • 同时,后端服务器宕机时,Nginx 服务器上的副本资源还能够回应相关的用户请求,这样能够提高后端服务器的鲁棒性(健壮性)。

2. Nginx 缓存


1. 缓存文件放在哪儿?
  • proxy_cache_path:Nginx 使用该参数指定缓存位置。

  • proxy_cache:该参数为之前指定的缓存名称。

  • proxy_cache_path:有两个必填参数

    • 第一个参数weight缓存目录。

    • 第二个参数 keys_zone 指定缓存名称和占用内存空间的大小。

user www-data;worker_processes auto;pid /run/nginx.pid;http {    proxy_cache_path /data/nginx/cache keys_zone=one:10m max_size=10g;        upstream zp.purple.com {        server 127.0.0.1:8881;        server 127.0.0.1:8882;        server 127.0.0.1:8883;    }        server {        listen 80;        proxy_cache one;        server_name zp.purple.com;                location / {            proxy_pass http://zp.purple.com;            proxy_set_header Host $host;            proxy_set_header X-Real_IP $remote_addr;        }    }}
  • 注:示例中的 10m 是对内存中缓存元数据信息大小的限制,如果想限制缓存总量大小,需要用 max_size 参数。

2. 如何指定哪些请求被缓存?
  • Nginx 默认会缓存所有 get 和 head 方法的请求结果,缓存的 key 默认使用请求字符串。

    • 自定义 key:例如 proxy_cache_key "$host$request_uri$cookie_user";

  • 指定请求至少被发送了多少次以上时才缓存,可以防止低频请求被缓存。

    • 例如 proxy_cache_min_user 5;

  • 指定哪些方法的请求被缓存

    • 例如 proxy_cache_methods GET HEAD POST;

user www-data;worker_processes auto;pid /run/nginx.pid;http {    proxy_cache_path /data/nginx/cache keys_zone=one:10m max_size=10g;        upstream zp.purple.com {        server 127.0.0.1:8881;        server 127.0.0.1:8882;        server 127.0.0.1:8883;    }        server {        listen 80;        proxy_cache one;        server_name zp.purple.com;                location / {            proxy_pass http://zp.purple.com;            proxy_set_header Host $host;            proxy_set_header X-Real_IP $remote_addr;            proxy_cache_key $host$request_uri$cookie_user;        }    }}
3. 缓存有效期
  • 默认情况下,缓存内容是长期存留的,除非缓存的总量超出限制。可以指定缓存有效时间,例如:

    proxy_cache_valid 200 302 10m;
    proxy_cache_valid any 5m;


    • 对任何状态码,5 分钟有效。

    • 响应状态码为 200 302 时,10 分钟有效。

user www-data;worker_processes auto;pid /run/nginx.pid;http {    proxy_cache_path /data/nginx/cache keys_zone=one:10m max_size=10g;        upstream zp.purple.com {        server 127.0.0.1:8881;        server 127.0.0.1:8882;        server 127.0.0.1:8883;    }        server {        listen 80;        proxy_cache one;        server_name zp.purple.com;                location / {            proxy_pass http://zp.purple.com;            proxy_set_header Host $host;            proxy_set_header X-Real_IP $remote_addr;            proxy_cache_valid 200 302 10m;        }    }}
4. 对于某些请求,是否可以不走缓存?
  • proxy_cache_bypass:该指令响应来自原始服务器而不是缓存。

  • 例如 proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;

  • 如果任何一个参数值不为空,或者不等于 0,nginx 就不会查找缓存,直接进行代理转发。

user www-data;worker_processes auto;pid /run/nginx.pid;http {    proxy_cache_path /data/nginx/cache keys_zone=one:10m max_size=10g;        upstream zp.purple.com {        server 127.0.0.1:8881;        server 127.0.0.1:8882;        server 127.0.0.1:8883;    }        server {        listen 80;        proxy_cache one;        server_name zp.purple.com;                location / {            proxy_pass http://zp.purple.com;            proxy_set_header Host $host;            proxy_set_header X-Real_IP $remote_addr;            proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;        }    }}

3. 网页缓存


  • 网页的缓存是由 HTTP 消息头中的"Cache-control"来控制的,常见的取值有 private、no-cache、max-age、must-revalidate 等,默认为 private。其作用根据不同的重新浏览方式分为以下几种情况。

Cache-durective说明
public所有内容都将被缓存(客户端和代理服务器都可缓存)
private内容只缓存到私有缓存中(仅客户端可以缓存,代理服务器不可缓存)
no-cache必须先与服务器确认返回的响应是否被更改,然后才能使用该响应来满足后续对同一个网址的请求。因此,如果存在合适的验证令牌(ETag),no-cache 会发起往返通信来验证缓存的响应,如果资源未被修改,可以避免下载。
no-store所有内容都不会被缓存到缓存或 Internet 临时文件中。
must-revalidation/proxy-revalidation如果缓存的内容失效,请求必须发送到服务器/代理以进行重新验证
max-age=xxx(xxx is numeric)缓存的内容将在 xxx 秒后失效,这个选项只在 HTTP1.1 可用,并如果和 Last-Modified 一起使用时,优先级较高

"什么是Nginx代理缓存机制"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

缓存 服务器 服务 内容 参数 代理 有效 大小 客户 情况 数据 限制 验证 机制 再次 副本 同时 名称 客户端 总量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网新科技 科技金融是不是互联网金融 圆梦互联网科技 易互联网科技有限公司 互联网科技作文 上海喔噻互联网科技 青海省互联网新科技 昭通云南众福互联网科技有限公司 互联网和黑科技的看法 互联网与医疗科技 杭州壁岐互联网科技有限公司 南通创西澳互联网科技有限公司 互联网营销推广黑科技 互联网科技股为什么大涨 西安有哪些互联网高科技企业 互联网金融运营模式中的金融科技 西安左小互联网科技有限公司 第三届互联网大会安防黑科技 河南商务圈互联网科技有限公司 科技发展第三阶段互联网时代 互联网科技会 互联网前沿科技 昭通互联网科技选哪家 晓花互联网科技有限公司网址 互联网科技公司有风险吗 呼和浩特新华互联网科技学院 米聚互联网科技南京有限公司排面 深圳艾果互联网通讯科技 科技大学互联网 上海科技产业互联网平台
0