Nginx 针对上游服务器缓存
L:99
nginx缓存 : 定义存放缓存的载体
proxy_cache 指令
Syntax: | proxy_cache |
---|---|
Default: |
proxy_cache off; |
Context: | http , server , location |
proxy_cache_path 指令 定义磁盘哪个位置存放缓存文件
Syntax: | proxy_cache_path |
---|---|
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 |
---|---|
Default: |
proxy_cache_key $scheme$proxy_host$request_uri; |
Context: | http , server , location |
缓存的响应
Syntax: | proxy_cache_valid [ |
---|---|
Default: | — |
Context: | http , server , location |
对不同的响应码缓存不等的时长
如 : code 404 5m;
标识时间
仅对以下响应缓存
200、301、302
通过响应头部控制缓存时长
X-Accel-Expires 单位秒
值为 0 时 禁止nginx缓存内容
可以通过 @设置缓存到某一个个时刻
响应头若含有 Set-Cookie则不缓存
响应头含有Vary:*则不缓存
设置那些内容不使用缓存
Syntax: | proxy_no_cache |
---|---|
Default: | — |
Context: | http , server , location |
如:proxy_no_cache $cookie_nocache $arg_nocache$arg_comment;
proxy_no_cache $http_pragma $http_authorization;
当相应值为真 就不使用缓存内容
Syntax: | proxy_cache_bypass |
---|---|
Default: | — |
Context: | http , server , location |
更变HEAD方法
Syntax: | proxy_cache_convert_head |
---|---|
Default: |
proxy_cache_convert_head on; |
Context: | http , server , location |
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 针对上游服务器缓存的更多相关文章
- nginx 加工上游服务器返回的内容,并返回给客户端
禁用上游响应头部功能 Syntax: proxy_ignore_headers field ...; Default: — Context: http, server, location 功能介绍:某 ...
- nginx 与上游服务器建立连接的相关设置
向上游服务建立联系 Syntax: proxy_connect_timeout time; #设置TCP三次握手超时时间,默认60秒:默认超时后报502错误 Default: proxy_connec ...
- 基于nginx实现上游服务器动态自动上下线——不需reload
网上关于nginx的介绍有很多,这里讲述的是上游服务(如下图的Java1服务)在没有"网关"的情况下,如何通过nginx做到动态上下线. 传统的做法是,手动修改nginx的upst ...
- Nginx 当上游服务器返回失败时的处理办法
陶辉95课 Syntax: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 ...
- Nginx 接受上游缓存流程
L:101 这个指令主要是由上游服务器来决定是否缓存 详见博客Nginx 针对上游服务器缓存
- 安全开发运维必备,如何进行Nginx代理Web服务器性能优化与安全加固配置,看这篇指南就够了
本章目录 1.引言 1.1 目的 1.2 目标范围 1.3 读者对象 2.参考说明 2.1 帮助参考 2.2 参数说明 3.3 模块说明 3.服务优化 3.1 系统内核 3.2 编译优化 3.3 性能 ...
- 一、zuul如何路由到上游服务器
所有文章 https://www.cnblogs.com/lay2017/p/11908715.html 正文 zuul在分布式项目中充当着一个网关的角色,而它最主要的功能像nginx一样针对上游服务 ...
- Nginx+upstream针对后端服务器容错的运维笔记
熟练掌握Nginx负载均衡的使用对运维人员来说是极其重要的!下面针对Nignx负载均衡upstream容错机制的使用做一梳理性说明: 一.nginx的upstream容错 1)nginx 判断节点失效 ...
- Nginx针对前端静态资源的缓存处理
当用户上报一个线上的bug后,开发者修改前端代码的bug上新后,用户反映问题依旧存在的问题...这种情况是不是曾经遇到过,这个问题跟浏览器的缓存机制有很大关系(强制缓存和协商缓存,这里我就不介绍具体的 ...
随机推荐
- Spring Boot2.0 整合 Kafka
Kafka 概述 Apache Kafka 是一个分布式流处理平台,用于构建实时的数据管道和流式的应用.它可以让你发布和订阅流式的记录,可以储存流式的记录,并且有较好的容错性,可以在流式记录产生时就进 ...
- JavaEE学习之Maven配置文件pom.xml详解(转)
一.引言 (本文转载自:http://blog.csdn.net/longeremmy/article/details/9670619) 使用maven有一些时间了,一直没有好好将pom配置文件每个节 ...
- Netty入门(一)之webSocket聊天室
一:简介 Netty 是一个提供 asynchronous event-driven (异步事件驱动)的网络应用框架,是一个用以快速开发高性能.高可靠性协议的服务器和客户端. 换句话说,Netty 是 ...
- git 分支管理规范
保证master分支永远处于可部署的状态.禁止自接提交代码到master分支 开发分支基于master分支创建,命名规范如下: 如果是功能需求,分支命名为feature/xxx,xxx要具有描述性 如 ...
- 初步学习Xamarin的感受
一直仰慕Xamarin的大名,最近抽空去浅学了一下. 最后有一种这东西不咋地,又有一种这东西还不错的感觉 先说下为什么不咋地? 如果在公司项目使用Xamarin.forms这个东西.按照国内APP设计 ...
- 跨语言调用Hangfire定时作业服务
跨语言调用Hangfire定时作业服务 背景 Hangfire允许您以非常简单但可靠的方式执行后台定时任务的工作.内置对任务的可视化操作.非常方便. 但令人遗憾的是普遍都是业务代码和hagnfire服 ...
- 牛客国庆集训派对Day2
题目链接:https://www.nowcoder.com/acm/contest/202/A A 题意:给出最大4096*64和64*4096的矩阵,其中有一个矩阵只含有0和1,问你它们相乘所得到得 ...
- net core 端口设置
在supervisor的启动配置里面增加环境变量: environment=ASPNETCORE_URLS='http://*:5001'
- 项目笔记-SC01
项目启动已有两周,从分析需求到系统设计,文档性工作比较多,只是文档参考比较少,相对的标准就不好界定了. 计划开发时间理论上是按部就班的,没什么变化,可能真正进入开发阶段才会遇到一些问题吧,有些问题就是 ...
- Nagios 系统监控
Nagios 系统监控 Nagios 是一款免费的开源 IT 基础设施监控系统,功能强大,灵活性强,能有效监控 Windows.Linux.VMware 和 Unix 主机状态,交换机.路由器等网络设 ...