L:99

nginx缓存 : 定义存放缓存的载体

proxy_cache 指令

Syntax: proxy_cache zone | off;
Default:
proxy_cache off;
Context: httpserverlocation

proxy_cache_path 指令 定义磁盘哪个位置存放缓存文件

Syntax: proxy_cache_path path [levels=levels] [use_temp_path=on|offkeys_zone(共享内存名称)=name:size(共享内存大小)[inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
Default:
Context: http

proxy_cache_path 指令参数详解

path : 定义缓存文件的存放位置

levels :定义缓存路径的目录层级,最多3级,每层目录长度为1或2字节

use_temp_path:如果设置on时,文件会放到proxy_temp_path定义的临时目录

         如果设置off时 ,文件就会存放到默认的proxy_cache_path目录

keys_zone:name是共享内存的名字,由proxy_cache指令使用

      size 是指共享内存大小,1mb大约可以存放8000个key

inactive :在inactive时间内没有被访问的缓存会被淘汰掉 默认10分钟

max_size:设置最大的缓存文件大小,超出后由cache manager进程按LRU链表淘汰

manager_file :cache manager 进程在1次淘汰过程中,淘汰的最大文件数 默认100

manager_sleep :执行一次淘汰循环后 cache manager进程的休眠时间  默认200毫秒

manager_threshold :执行一次淘汰循环的最大耗时 默认50毫秒

loader_files : cache_loader 进程载入磁盘中缓存至共享内存,每批最多处理的文件数 默认100

loader_sleep : 执行一次缓存文件至共享内存后,进程休眠时间 默认200毫秒

loader_threshold : 每次载入缓存文件至共享内存的最大耗时 默认50毫秒 

 

缓存关键字

Syntax: proxy_cache_key string;
Default:
proxy_cache_key $scheme$proxy_host$request_uri;
Context: httpserverlocation

缓存的响应

Syntax: proxy_cache_valid [code ...] time;(时间是必填的code是选填)
Default:
Context: httpserverlocation

对不同的响应码缓存不等的时长

  如 : code 404 5m;

 标识时间

  仅对以下响应缓存

   200、301、302

通过响应头部控制缓存时长

  X-Accel-Expires 单位秒

  值为 0 时 禁止nginx缓存内容

  可以通过 @设置缓存到某一个个时刻

  响应头若含有 Set-Cookie则不缓存

  响应头含有Vary:*则不缓存

设置那些内容不使用缓存

Syntax: proxy_no_cache string ...参数为真时 响应不存入缓存;
Default:
Context: httpserverlocation

如:proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;

  proxy_no_cache $http_pragma $http_authorization;

当相应值为真 就不使用缓存内容

Syntax: proxy_cache_bypass string ...;
Default:
Context: httpserverlocation


更变HEAD方法
Syntax: proxy_cache_convert_head on | off;
Default:
proxy_cache_convert_head on;
Context: httpserverlocation


Upstream_cache_status变量与值说明

Miss : 为命中缓存

HIT : 命中缓存

EXPIRED : 缓存已经过期

STALE : 命中了陈旧的缓存

UPDATING : 内容陈旧,但正在更新

REVALIDATED : nginx验证了陈旧的内容依然有效

BYPASS : 响应是从原始服务器获得的

HTTP/1.1 200 OK
Server: openresty/1.13.6.2
Date: Fri, 08 Mar 2019 10:23:45 GMT
Content-Type: text/plain
Content-Length: 6
Connection: keep-alive
Last-Modified: Wed, 13 Feb 2019 09:03:32 GMT
ETag: "5c63dd64-6"
X-Cache-Status: HIT
Accept-Ranges: bytes

代码演示下游服务器代码示列:

proxy_cache_path /data/tmpcache levels=: keys_zone=two:10m loader_threshold=
loader_files= max_size=200m inactive=1m; server {
server_name shop**.com.cn;
root html/;
  error_log logs/cacherr.log debug; #打开DEBUG日志能实时看查看问题
location /{
proxy_cache two; #用了 上面的keys_zone定义的two 并且缓存10分钟
proxy_cache_valid 1m; #如果是响应码200 则是1分钟有效期
add_header X-Cache-Status $upstream_cache_status; #这里添加了个头 值就是前面介绍缓存状态值
proxy_pass http://192.168.0.51:8012;;
}
}

针对这个上游服务器代码不阐述了就简单 配置个1.txt能访问的静态文件即可

我们演示个请求

curl http://shop***.com.cn:8080/1.txt -I

我们看下返回的头

HTTP/1.1 200 OK
Server: openresty/1.13.6.2
Date: Sat, 09 Mar 2019 06:38:56 GMT
Content-Type: text/plain
Content-Length: 6
Connection: keep-alive
Last-Modified: Wed, 13 Feb 2019 09:03:32 GMT
ETag: "5c63dd64-6"
X-Cache-Status: MISS  #这个就是我们在location 放的头部 值为缓存状态
Accept-Ranges: bytes

再次请求 curl http://shop***.com.cn:8080/1.txt -I

HTTP/1.1 200 OK
Server: openresty/1.13.6.2
Date: Sat, 09 Mar 2019 06:39:00 GMT
Content-Type: text/plain
Content-Length: 6
Connection: keep-alive
Last-Modified: Wed, 13 Feb 2019 09:03:32 GMT
ETag: "5c63dd64-6"
X-Cache-Status: HIT #我们发现 值边了 处于hit 命中状态 说明已经用的是缓存了
Accept-Ranges: bytes

 所有缓存文件否存放在 /data/tmpcache 这个目录下

我们针对上游服务器也可以如下配置

server {
listen ;
default_type text/plain;
root html;
add_header X-Accel-Expires ;#配置3秒钟缓存过期
          add_header Vary *; #表示不做缓存 怎么访问都是MISS
          add_header Cache_Control 'max-age=3,state-while-revalidate=3'; #类似Vary * 也表示不做缓存
location / { }
}

 

Nginx 针对上游服务器缓存的更多相关文章

  1. nginx 加工上游服务器返回的内容,并返回给客户端

    禁用上游响应头部功能 Syntax: proxy_ignore_headers field ...; Default: — Context: http, server, location 功能介绍:某 ...

  2. nginx 与上游服务器建立连接的相关设置

    向上游服务建立联系 Syntax: proxy_connect_timeout time; #设置TCP三次握手超时时间,默认60秒:默认超时后报502错误 Default: proxy_connec ...

  3. 基于nginx实现上游服务器动态自动上下线——不需reload

    网上关于nginx的介绍有很多,这里讲述的是上游服务(如下图的Java1服务)在没有"网关"的情况下,如何通过nginx做到动态上下线. 传统的做法是,手动修改nginx的upst ...

  4. Nginx 当上游服务器返回失败时的处理办法

    陶辉95课 Syntax: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503  ...

  5. Nginx 接受上游缓存流程

    L:101 这个指令主要是由上游服务器来决定是否缓存 详见博客Nginx 针对上游服务器缓存

  6. 安全开发运维必备,如何进行Nginx代理Web服务器性能优化与安全加固配置,看这篇指南就够了

    本章目录 1.引言 1.1 目的 1.2 目标范围 1.3 读者对象 2.参考说明 2.1 帮助参考 2.2 参数说明 3.3 模块说明 3.服务优化 3.1 系统内核 3.2 编译优化 3.3 性能 ...

  7. 一、zuul如何路由到上游服务器

    所有文章 https://www.cnblogs.com/lay2017/p/11908715.html 正文 zuul在分布式项目中充当着一个网关的角色,而它最主要的功能像nginx一样针对上游服务 ...

  8. Nginx+upstream针对后端服务器容错的运维笔记

    熟练掌握Nginx负载均衡的使用对运维人员来说是极其重要的!下面针对Nignx负载均衡upstream容错机制的使用做一梳理性说明: 一.nginx的upstream容错 1)nginx 判断节点失效 ...

  9. Nginx针对前端静态资源的缓存处理

    当用户上报一个线上的bug后,开发者修改前端代码的bug上新后,用户反映问题依旧存在的问题...这种情况是不是曾经遇到过,这个问题跟浏览器的缓存机制有很大关系(强制缓存和协商缓存,这里我就不介绍具体的 ...

随机推荐

  1. centos 7 安装 MySQL 5.6

    由于Centos7 默认数据库是mariabd,所以通过rpm安装MySQL需要卸载原有的Mariabd,再下载所有的依赖包比较麻烦且容易出错.通过yum的方式安装.yum其实是rpm的一个升级将所有 ...

  2. H5 59-浮动元素的脱标

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 牛客练习赛35 C.函数的魔法

    链接 [https://ac.nowcoder.com/acm/contest/32] 题意 题目描述 一位客人来到了此花亭,给了女服务员柚一个数学问题:我们有两个函数,F(X)函数可以让X变成(XX ...

  4. (第十三周)Final Review会议

    项目名:食物链教学工具 组名:奋斗吧兄弟 组长:黄兴 组员:李俞寰.杜桥.栾骄阳.王东涵 Final Review会议 时间:2016.12.2   13:00——15:00 地点:冬华楼一楼大厅 会 ...

  5. 在java中怎样获得当前日期时间

    Calendar cal = Calendar.getInstance();    java.text.SimpleDateFormat sdf = new SimpleDateFormat(&quo ...

  6. IDEA通过Git同步代码到Coding

     准备工作: (1)在本地创建好项目 (2)在coding创建好项目,并设置公开      1.创建Git仓库 2.选择对应的本地项目文件夹 以上两步相当于在项目文件夹中git bash here 并 ...

  7. PAT 7-14 公路村村通

    https://pintia.cn/problem-sets/1111189748004499456/problems/1111189831248850957 现有村落间道路的统计数据表中,列出了有可 ...

  8. 分布式Tomcat session会话Sticky Sessions问题

    分布式session会话Sticky Sessions - tomcat_baby的专栏 - CSDN博客https://blog.csdn.net/tomcat_baby/article/detai ...

  9. MySQL 性能调优之存储引擎

    原文:http://bbs.landingbj.com/t-0-246222-1.html        http://bbs.landingbj.com/t-0-245851-1.html MySQ ...

  10. Linux 下面 PG 的 uuid-ossp 包安装办法

    1. pgsql 安装 时报错, 如图示: 详细信息为: 执行SQL为: CREATE EXTENSION IF NOT EXISTS "uuid-ossp" 错误纤细信息为: C ...