接收到客户端的请求以后缓存模块处理流程


缓存流程分为两部分,的一部分是接收到客户端发来的请求。首先对于用户的请求是否可以使用缓存,如果在当前的location下有proxy_cache指令才会继续往下走,如果是否的话就直接向上游发送请求。当location中有proxy_cache指令会使用proxy_cache_method来判断对哪个method方法使用缓存返回响应,比如get,head,post,否则我们不使用缓存,默认的时候是get和head方法我们才使用缓存当中的内容,这个指令可以出现在http当中,所以可以使用向下合并的规则。当用户请求匹配到cache_methods之后,请求的methods是head方法接下来会根据proxy_cache_convert_head指令将其转化为get方法。再接下来会根据proxy_cache_key关键字$scheme$proxy_host$request_uri生成关键字。根据关键字生成md5。

根据关键字检查cache_pass指令指明对于满足条件的哪些请求时不缓存的,条件后面时一些变量的值,当变量值为真代表不缓存直接向上游发送请求。当变量值是否的时候使用缓存的时候就会在proxy_cache指令里面指定的共享内存里寻找缓存是否存在,如果缓存存在读取缓存内容,如果缓存不存在访问上游以后等上游的响应回来了再更新我的缓存。缓存不存在在共享内存当中分配节点再走下面的流程,如果存在就会去更新LRU链表及节点计数,因为缓存是有LRU淘汰的,因为刚刚访问过这个缓存,所以要将其移动到不容易淘汰的地方并且更新LRU链表。

如果是错误类响应404或者500就直接向上游发送请求用新的响应来更新缓存,如果不是错误类响应再判断文件是否存在,存在且超过了proxy_cache_min_uses就根据proxy_cache_background_update生成子请求,由这个子请求去更新缓存,同时使用过期的缓存向下游发送响应。如果没有过期就直接向下游返回响应就行。

当我们接收到上游响应之后,首先会匹配proxy_no_cache指令,当满足这个条件的时候表示不缓存,这个时候不更新缓存,转发上游响应。Proxy_cache_valide指令是一定需要配置的,它可以决定哪些响应码可以缓存,缓存多长时间,如果没有匹配到proxy_cache_valide指令会转发给上游服务器,匹配到响应码是否为200,206,如果是200,206那么更新cache中的etag和last_modified,因为该字段会在后续的访问中返回给客户端,然后接着处理缓存相关的头部

Nginx proxy反向代理 缓存处理流程相关推荐

  1. nginx配置反向代理缓存

    说明 最近运维一个网站里面含有不经常变化的小图片,而每次请求都需要调用file接口获取不太合适.所以就想利用nginx的反向代理缓存来减轻服务接口的请求压力. 工作原理 Nginx反向代理缓存,当客户 ...

  2. 【推荐】如何用 Nginx 构建反向代理缓存服务器?

    作者:一盏烛光,贤牛特邀工程师. 防伪码:曾经沧海难为水,除却巫山不是云. 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对 Internet 的连接请求(如×××/NAT), ...

  3. NGINX做反向代理缓存服务器原理

    代理服务可以简单的分为正向代理和反向代理 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标web服务器的HTTP请求先发送到 ...

  4. Nginx缓存以及反向代理缓存设置

    expires指令 (1).expires [time] server {listen 90;server_name localhost;location /czj {root /home;expir ...

  5. Nginx之反向代理与负载均衡实现动静分离实战

    Nginx之反向代理与负载均衡实现动静分离实战 什么是反向代理与负载均衡 Nginx仅仅作为Nginx  proxy反向代理使用的,因为这个反向代理功能表现的效果是负载均衡集群的效果. 负载均衡指的是 ...

  6. nginx反向代理+缓存开启+url重写+负载均衡(带健康探测)的部署记录

    在日常运维工作中,运维人员会时常使用到nginx的反向代理,负载均衡以及缓存等功能来优化web服务性能. 废话不多说,下面对测试环境下的nginx反向代理+缓存开启+url重写+负载均衡(带健康探测) ...

  7. nginx反向代理缓存服务器构建

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 代理服务可简单的分为正向代理和反向代理: ...

  8. 解决nginx反向代理缓存不起作用的问题

    解决nginx反向代理缓存不起作用的问题 参考文章: (1)解决nginx反向代理缓存不起作用的问题 (2)https://www.cnblogs.com/dudu/p/4597351.html 备忘 ...

  9. NGINX反向代理缓存

    NGINX反向代理缓存 四月 13, 2011 网上好多文章都是多台服务器 做缓存 然后反向代理到后台服务器 不过作为一个穷人哪来那么多服务器 所以我们要让NGINX既做WEB服务器也做缓存.. 这样 ...

最新文章

  1. 人工智能在哪些方面可以对IT运营产生重大影响
  2. 《云安全原理与实践》——2.2 云计算面临的管理风险
  3. python 压缩图片
  4. Android:BroadcastReceiver的基础知识
  5. 2021年阳光高考成绩查询,高考攻略 | 2021年阳光高考月历来了!
  6. SQLLite (二) :sqlite3_open, sqlite3_exec, slite3_close
  7. python人工智能pdf_800G人工智能学习资料:AI电子书+Python语言入门+教程+机器学习等限时免费领取!...
  8. php批量采集电视剧,如何通过PHP多线程批量采集下载远程网站图片代码实例
  9. Qt学习笔记-Qt程序切换皮肤
  10. 学习笔记——逻辑斯蒂回归与最大熵模型
  11. python是什么类型的语言-编程语言分类及python所属类型
  12. linux下 常用的find命令
  13. AForge.net库类下载方式
  14. 【转】PIC单片机入门笔记(新手学PIC必看)——基于PIC16F886
  15. intellij idea文件颜色代表的含义
  16. 周易六十四卦——同人卦
  17. 计算机设备选型的基本原则,设备选型的概念和选型依据
  18. 2019最全大数据学习资源整理(值得收藏)
  19. CFML----一门在国外很多大公司得到应用的语言
  20. Java图片处理 - 创建工具类

热门文章

  1. java程序设计 秒表计时器_【Java】Java计时器(秒表)
  2. 安卓逆向Xposed HOOK TB直播APP的x-sign参数
  3. MKOnlinePlayer在线音乐播放器
  4. 路由器/交换机flow 调试指令
  5. 一次Wi-Fi入侵实录
  6. 侯捷 C++内存管理
  7. Spring 注解 属性赋值与自动注入装配
  8. java运行时跟编译时的区别,欢迎大家指正
  9. Docker安装和部署
  10. Python+CV2实现黑色背景的旋转图片矫正回水平图片