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上新后,用户反映问题依旧存在的问题...这种情况是不是曾经遇到过,这个问题跟浏览器的缓存机制有很大关系(强制缓存和协商缓存,这里我就不介绍具体的 ...
随机推荐
- Jlink使用技巧之读取STM32内部的程序
前言 上一篇Jlink系列文章介绍了如何使用J-Flash来下载Hex或Bin文件到单片机,具体可参考Jlink使用技巧之单独下载HEX文件到单片机,本篇文章介绍,如何使用JFlash来读取单片机的程 ...
- 在vue2.0中引用element-ui组件库
element-ui是由饿了么团队开发的一套基于 Vue 2.0 的桌面端组件库. 官网:http://element.eleme.io/ 安装 npm i element-ui -S 引用完整的el ...
- 微信小程序支付异常:requestPayment:fail no permission
今天在调试微信小程序支付时碰到了这个问题,支付参数都正常生成了,在调用 wx.requestPayment 进行支付时遇到了这个报错,查了一下发现是开发者工具中 AppID 写错了,用的 AppID ...
- 一次掌握 React 与 React Native 两个框架
此系列文章将整合我的 React 视频教程与 React Native 书籍中的精华部分,给大家介绍 React 与 React Native 结合学习的方法. 1. 软件开发语言与框架的学习本质 我 ...
- Python魔法函数
python中定义的以__开头和结尾的的函数.可以随意定制类的特性.魔法函数定义好之后一般不需要我们自己去调用,而是解释器会自动帮我们调用. __getitem__(self, item) 将类编程一 ...
- [options] 未与 -source 1.6 一起设置引导类路径
用ant与eclipse编译Cassandra 1.2.19,出现了“ [options] 未与 -source1.6一起设置引导类路径”的警告,并出现了一些编译错误,提示编译失败,上网找了很 多资料 ...
- 中国科学技术大学统一身份认证系统CAS
CAS | Apereohttps://www.apereo.org/projects/cas 中国科学技术大学统一身份认证系统https://passport.ustc.edu.cn/login?s ...
- asp.net core发布到linux
在发布到linux的过程中出现两个问题现在总结一下: 我的虚拟机是安装到本机上面的,所以,应该在虚拟机的设置里面设置端口映射.具体设置如下: 选择vm上方的编辑 在弹出的框中选择VMnet8,点击下方 ...
- 2 Modals of necessity
1 情况动词must 和词组have to, need to ,have got to 都表示必须做某事或者要求做某事. need to have to must have got to When ...
- Oracle转换函数
()--转换函数 --数字转换字符串 )||'分' from dual; ||'' from dual; ()--日期转字符串 select to_char(sysdate,'yyyy-mm-dd') ...