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上新后,用户反映问题依旧存在的问题...这种情况是不是曾经遇到过,这个问题跟浏览器的缓存机制有很大关系(强制缓存和协商缓存,这里我就不介绍具体的 ...
随机推荐
- face detection[HR]
该模型hybrid-resolution model (HR),来自<finding tiny faces>,时间线为2016年12月 0 引言 虽然大家在目标识别上有了较好的进步,可是检 ...
- odoo11 安装python ldap
最近在研究odoo11使用ldap登录的问题,本来自己想着怎么开发,无意间在odoo11代码中看到auth_ldap的模块,原来框架已经考虑到了这个,简单研究了代码之后,理解了其大概的登录处理过程,此 ...
- 在Winform框架界面中改变并存储界面皮肤样式
在本篇介绍的Winform界面样式改变及存储操作中,是指基于DevExpress进行界面样式的变化.一般情况下,默认我们会为客户提供多种DevExpress的界面皮肤以供个人喜好选择,默认DevExp ...
- 立足中国,走向世界(Made in China, Go to World)
FineUI一路走来已经历经 9 年的风风雨雨,拥有国内最为广泛的捐赠群体(1500多位),和众多企业客户的青睐(200多家). 今天,我们很高兴的宣布:FineUI英文版上线了! FineUI英文版 ...
- OdnShop 发布 V1.0 正式版,完整可用的开源微商城系统
OdnShop是基于ASP.NET 4.0+Mysql开发的开源微商城系统,我们的目标是构建一个核心完善而又轻量级的微商城平台. 本版本更新功能: 1,修正数据库操作的部分表名称的表前缀错误: 2,修 ...
- Item 22: 当使用Pimpl机制时,在实现文件中给出特殊成员函数的实现
本文翻译自<effective modern C++>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 如果你曾经同过久的编译时间斗争过,那么你肯定对Pi ...
- RabbitMQ 发布订阅
互联网公司对消息队列是深度使用者,因此需要我们了解消息队列的方方面面,良好的设计及深入的理解,更有利于我们对消息队列的规划. 当前我们使用消息队列中发现一些问题: 1.实际上是异步无返回远程调用,由发 ...
- 朱晔的互联网架构实践心得S2E3:品味Kubernetes的设计理念
Kubernetes(k8s)是一款开源的优秀的容器编排调度系统,其本身也是一款分布式应用程序.虽然本系列文章讨论的是互联网架构,但是k8s的一些设计理念非常值得深思和借鉴,本人并非运维专家,本文尝试 ...
- 实现多个标签页之间通信的几种方法(sharedworker)
效果图.gif prologue 之前在网上看到一个面试题:如何实现浏览器中多个标签页之间的通信.我目前想到的方法有三种:使用websocket协议.通过localstorage.以及使用html ...
- js中的join(),reverse()与 split()函数用法解析
<script> /* * 1:arrayObject.reverse() * 注意: 该方法会改变原来的数组,而不会创建新的数组.此函数可以将数组倒序排列 * 2:arrayObject ...