[nginx]proxy_cache缓存系统
前言
proxy_cache是nginx内置的一个缓存系统,可实现减小后端负载的作用。
常用参数说明
| 参数 | 说明 |
|---|---|
| proxy_cache_path | 缓存文件路径。level表示目录层级,1:2表示两个子目录。keys_zone指定缓存区名称和大小。inactive表示缓存有效期。max_size表示硬盘中缓存的大小。use_temp_path为off时表示缓存文件直接写到cache中而不使用temp_path,避免文件拷贝导致影响性能。 |
| proxy_cache | 启用缓存并指定缓存区域 |
| proxy_cache_valid | 根据状态码来定义缓存的有效期 |
| proxy_cache_min_uses | 被访问多少次后才缓存,默认为1 |
| proxy_cache_methods | 指定可以被缓存的请求方法,默认值为 GET HEAD |
| proxy_cache_convert_head | 如果设置为 on 表示允许将请求的 HEAD 方法改成 GET 方法进行缓存;如果设置为 off,则缓存的 key 需要加上$request_method,即$host$request_uri$request_method |
| proxy_cache_key | 设置缓存的 key,默认 key 是完整的 URL |
| proxy_cache_background_update | 允许后台启动一个子请求去更新过期的缓存数据,并提供一个过期的缓存数据响应给客户端,前提是 proxy_cache_use_stale 的配置中包含 updating |
| proxy_cache_use_stale | 允许在某种条件下返回请求时使用过期的缓存数据 |
| proxy_cache_lock | 多条相同url请求未命中缓存时,nginx只发送一条请求到后端 |
| proxy_cache_lock_timeout | 缓存未命中等待超时后,所有未命中的url请求都会转到后端 |
| proxy_ignore_headers | 即便有指定的响应头操作,依然使用缓存 |
配置示例
http {
# 设置缓存路径、目录层级(1:2 表示两个子目录)、内存zone的名字和内存大小
# 缓存有效时间、硬盘最大存储大小、缓存文件直接写到cache文件中而不使用temp_path
proxy_cache_path /home/apps/nginx/cache levels=1:2 keys_zone=ngxcache:100m inactive=7d max_size=1g use_temp_path=off;
server {
...
proxy_cache ngxcache;
proxy_cache_valid 200 304 5m;
proxy_cache_valid 301 302 2m;
proxy_cache_min_uses 1;
# 添加一个响应头,用来标识请求是否命中缓存
add_header N-Cache-Status $upstream_cache_status;
proxy_cache_methods GET HEAD;
proxy_cache_convert_head on;
proxy_cache_key $scheme$host$uri$is_args$args;
proxy_cache_background_update on;
# 允许在某种条件下返回请求时使用过期的缓存数据
proxy_cache_use_stale error timeout invalid_header updating http_502 http_503 http_504;
proxy_cache_lock on;
proxy_cache_lock_timeout 10;
# 即便有Vary、Set-Cookie的响应头操作,依然使用缓存
proxy_ignore_headers Vary Set-Cookie;
proxy_pass http://backend;
}
}
[nginx]proxy_cache缓存系统的更多相关文章
- nginx proxy_cache缓存详解
目录 1. 关于缓冲区指令 1.1 proxy_buffer_size 1.2 proxy_buffering 1.3 proxy_buffers 1.4 proxy_busy_buffers_siz ...
- Nginx proxy_cache 缓存静态文件
原文链接:https://blog.csdn.net/bjgaocp/article/details/87867521 创建缓存目录mkdir /tmp/ngx_cache 添加下面语句在http{ ...
- 使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度
碰到问题:移动用户访问web服务器www.osyunwei.com很慢解决办法:1.在移动机房放置一台nginx反向代理服务器2.通过域名DNS智能解析,所有移动用户访问www.osyunwei.co ...
- 【Nginx】不改系统源代码的情况下,动态网站离线缓存方案
背景: 公司的一套系统,由前端.界面.服务层.大数据开发平架等多层组成,每一层被划分为多个模块,每个模块会依赖若干组建.由于公司的这套系统是部署在内网环境中的,现在需要拿出去给客户演示,用一个笔记本装 ...
- Nginx 学习笔记(三)proxy_cache 缓存配置和ngx_cache_purge模块
反向代理的缓存清理 一.proxy_cache配置 (1)如何配置和安装,都在这里了:https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Ng ...
- 使用Nginx的proxy_cache缓存功能取代Squid(转)
Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.这个缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302 ...
- nginx的proxy_cache缓存配置
为什么要做web cache,我想大家最主要的是解决流量的压力.随着网站流量的提升,如果只是单台机器既处理静态文件,又处理动态脚本,显然效率很难上升,不能处理日益上涨的流量压力.与此同时某些网站的页面 ...
- 使用Nginx的proxy_cache缓存功能取代Squid
Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.这个缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302 ...
- 使用Nginx的proxy_cache缓存功能取代Squid[原创]
使用Nginx的proxy_cache缓存功能取代Squid[原创] [文章作者:张宴 本文版本:v1.2 最后修改:2009.01.12 转载请注明原文链接:http://blog.zyan.cc/ ...
- Nginx + PHP 缓存详解
Nginx缓存nginx有两种缓存机制:fastcgi_cache和proxy_cache下面我们来说说这两种缓存机制的区别吧proxy_cache作用是缓存后端服务器的内容,可能是任何内容,包括静态 ...
随机推荐
- vue【解决方案】页面/路由跳转后,滚动条消失,页面无法滚动
原因解析: vue项目中,页面/路由跳转后,body 的内联样式变成 overflow:hidden 解决方案: 使用路由守卫,在页面/路由跳转后,将body 的overflow设置为auto src ...
- vue中点击其他任意位置关闭弹框
mounted() { //点击任意位置关闭区域弹窗 document.addEventListener('click', (e) => { //获取弹窗对象 const userCon = d ...
- 2022-04-01:有n个人,m个任务,任务之间有依赖记录在int[][] depends里。 比如: depends[i] = [a, b],表示a任务依赖b任务的完成, 其中 0 <= a <
2022-04-01:有n个人,m个任务,任务之间有依赖记录在int[][] depends里. 比如: depends[i] = [a, b],表示a任务依赖b任务的完成, 其中 0 <= a ...
- 2022-03-18:arr数组长度为n, magic数组长度为m 比如 arr = { 3, 1, 4, 5, 7 },如果完全不改变arr中的值, 那么收益就是累加和 = 3 + 1 + 4 +
2022-03-18:arr数组长度为n, magic数组长度为m 比如 arr = { 3, 1, 4, 5, 7 },如果完全不改变arr中的值, 那么收益就是累加和 = 3 + 1 + 4 + ...
- select_related和prefetch_related函数
在数据库存在外键的其情况下,使用select_related()和prefetch_related()很大程度上减少对数据库的请求次数以提高性能 在表中查找数据的时候,使用外键表related_nam ...
- 如何判断Keil MDK ARM中已经破解?如何判断Keil MDK ARM中已经安装了相应的器件库?如何判断CubeMX的器件库已经安装成功?
如何判断CubeMX的器件库已经安装成功?请对照下图 如何判断Keil MDK ARM中已经安装了相应的器件库?请看下图 如何判断CubeMX的器件库已经安装成功?请对照下图
- 浅析开源容器标准——OCI
1.导语 容器技术火起来了以后,Docker的容器镜像和容器运行时已然成为行业的标准.此后,为了推进容器生态的健康发展.在Linux基金会的主导下,Docker和各大云厂商Google, Amazon ...
- Dotnet9网站回归Blazor重构,访问速度飞快,交互也更便利了!
大家好,我是沙漠尽头的狼. Dotnet9网站回归Blazor重构,访问速度确实飞快,同时用上Blazor的交互能力,站长也同步添加了几个在线工具,这篇文章分享下Blazor的重构过程,希望对大家网站 ...
- Python编程和数据科学中的机器学习:如何处理和可视化具有噪声和干扰的数据
目录 随着数据科学和机器学习的快速发展,处理和分析具有噪声和干扰的数据成为了一个日益重要的挑战.在数据科学和机器学习中,噪声和干扰通常来自于各种因素,例如随机性和非随机性,数据缺失,数据集中的错误或错 ...
- 性能_3 jmeter连接数据库jdbc(sql server举例)
一.下载第三方工具包驱动数据库 1. 因为JMeter本身没有提供链接数据库的功能,所以我们需要借助第三方的工具包来实现. (有这个jar包之后,jmeter可以发起jdbc请求,没有这个jar包, ...