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上新后,用户反映问题依旧存在的问题...这种情况是不是曾经遇到过,这个问题跟浏览器的缓存机制有很大关系(强制缓存和协商缓存,这里我就不介绍具体的 ...
随机推荐
- 算法相关——Java排序算法之希尔排序(五)
个子块,即{3,5},{1,0},{5,2},{9,4},{6,12},将每个子块进行插入排序(即第i位与第i+5位进行比较交换),初步排序结果为{3,0,2,4,6,5,1,5,9,12}.希尔排序 ...
- HBase篇(5)- BloomFilter
[每日五分钟搞定大数据]系列,HBase第五篇.上一篇我们落下了Bloom Filter,这次我们来聊聊这个东西. Bloom Filter 是什么? 先简单的介绍下Bloom Filter(布隆过滤 ...
- Java和.NET(C#)的开发用到的技术对比总结
前言 声明:我指的是一般的Java和.NET(C#)的后台开发用到的技术总结 最近一直在应聘ing,楼主的项目还是.NET(C#)项目居多,Java项目相对少,在这也吐槽下,招.NET(C#)的公司实 ...
- Linux iptables 命令
iptables 是 Linux 管理员用来设置 IPv4 数据包过滤条件和 NAT 的命令行工具.iptables 工具运行在用户态,主要是设置各种规则.而 netfilter 则运行在内核态,执行 ...
- [C#]SQL Server Express LocalDb(SqlLocalDb)的一些体会
真觉得自己的知识面还是比较窄,在此之前,居然还不知道SqlLocalDb. SqlLocalDb是啥?其实就是简化SQL Server的本地数据库,可以这样子说,SQL Server既可以作为远程,也 ...
- 正确理解CAP定理
前言 CAP的理解我也看了很多书籍,也看了不少同行的博文,基本每个人的理解都不一样,而布鲁尔教授得定义又太过的简单,没有具体描述和场景案例分析.因此自己参考部分资料梳理了一篇与大家互相分享一下. 标题 ...
- Tarjan算法(缩点)
因为最近在学2sat,需要学习前置技能—Tarjan算法,所以花了一天的时间学习这个算法 算法步骤: 1.从一个点开始dfs,并加入栈 2.如果下一个点没有到过,跳到第一步 3.如果下一个点到过,并且 ...
- python中filter(),reduce()函数
filter()函数 是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 和一个list,这个函数的作用是对每个元素进行判断,返回 True或 False,filter() ...
- p68理想的性质
1.如何由2.2.4推出后面的结论? 2.为什么A可以等于R? 3.如何证明3? π:R->R/M套用定理2.2.4(2)和(1) R2是R/M,I是R/M的理想也就是R2的理想,所以f^(-1 ...
- ntpd、ntpdate、hwclock的区别
hwclock --systohc 使用ntpdate更新系统时间 - 潜龙勿用 - CSDN博客https://blog.csdn.net/suer0101/article/details/7868 ...