Nginx作为缓存服务
缓存类型
(1) 服务器缓存
服务端缓存一般使用Memcache、Redis
(2)代理缓存
(3)客户端缓存
代理缓存流程图
第一步:客户端第一次向Nginx请求数据a;
第二步:当Nginx发现缓存中没有数据a时,会向服务端请求数据a;
第三步:服务端接收到Nginx发来的请求,则返回数据a到Nginx,并且缓存在Nginx;
第四步:Nginx返回数据a给客户端应用;
第五步:客户端第二次向Nginx请求数据a;
第六步:当Nginx发现缓存中存在数据a时,则不会请求服务端;
第七步:Nginx把缓存中的数据a返回给客户端应用。
配置语法
proxy_cache_path配置语法
Syntax:
proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
Default: —
Contex: http
proxy_cache配置语法
- Syntax: proxy_cache zone | off;
- Default: proxy_cache off;
- Context: http, server, location
proxy_cache_valid配置语法
- Syntax: proxy_cache_valid [code ...] time;
- Default: —
- Context: http, server, location
proxy_cache_key配置语法
- Syntax: proxy_cache_key string;
- Default: proxy_cache_key $scheme$proxy_host$request_uri;
- Context: http, server, location
案例演示:
upstream imooc {
server 192.168.1.112:8001;
server 192.168.1.112:8002;
server 192.168.1.112:8003;
}
#需要首先配置 缓存目录,文件目录层级2级,空间名字 10m大小,目录最大大小(超过启动nginx自己的淘汰规则),在60分钟的时间内没有被访问就会被清理,存放临时文件
proxy_cache_path /opt/app/cache levels=1:2 keys_zone=imooc_cache:10m max_size=10g inactive=60m use_temp_path=off; server {
listen 80;
server_name localhost jeson.t.imooc.io; location / {
proxy_cache off; #开启缓存,imooc_cache对应上面keys_zone=imooc_cache:10m ;关闭off
proxy_pass http://imooc;
proxy_cache_valid 200 304 12h; #200和304头信息过期时间12小时
proxy_cache_valid any 10m; #其他过期时间10分钟
proxy_cache_key $host$uri$is_args$args; #定义缓存的key
add_header Nginx-Cache "$upstream_cache_status";#增加一个头信息 proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; # 一个服务报错请求下一个
include proxy_params;
}
}
清理缓存的内容
cd /opt/app/cache
rm * ./ -rf
让部分请求不缓存
upstream imooc {
server 192.168.1.112:8001;
server 192.168.1.112:8002;
server 192.168.1.112:8003;
}
#需要首先配置 缓存目录,文件目录层级2级,空间名字 10m大小,目录最大大小(超过启动nginx自己的淘汰规则),在60分钟的时间内没有被访问就会被清理,存放临时文件
proxy_cache_path /opt/app/cache levels=1:2 keys_zone=imooc_cache:10m max_size=10g inactive=60m use_temp_path=off; server {
listen 80;
server_name localhost jeson.t.imooc.io; #如果url中包含以下路径参数,那么 cookie_nocache 的值为1
if($request_uri ~^/(url3|login|register|password\/reset)){
set $cookie_nocache 1;
} location / {
proxy_cache off; #开启缓存,imooc_cache对应上面keys_zone=imooc_cache:10m ;关闭off
proxy_pass http://imooc;
proxy_cache_valid 200 304 12h; #200和304头信息过期时间12小时
proxy_cache_valid any 10m; #其他过期时间10分钟
proxy_cache_key $host$uri$is_args$args; #定义缓存的key
add_header Nginx-Cache "$upstream_cache_status";#增加一个头信息 #部分不设置缓存 cookie_nocache上面配置的参数, cookie_nocache不为0或者空 那么是不会进行缓存的
proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
proxy_no_cache $http_pragma $http_authorization; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; # 一个服务报错请求下一个
include proxy_params;
}
}
大文件分片请求
优势:每个子请求收到的数据都会形成一个独立的文件,一个请求断了,其他的请求不受到影响
缺点:当文件很大或者slice很小的时候,可能会导致文件描述符耗尽的情况。
语法
- syntax:slice size;
- Default:slice 0;
- Context:http,server,location
Nginx作为缓存服务的更多相关文章
- nginx的缓存服务
都知道缓存的目的是为了减小服务端的压力,可以在客户端直接取到数据 客户端---------------nginx(代理缓存)------------------服务端 代理缓存的描述: 就是客户端发送 ...
- 12、Nginx代理缓存服务
通常情况下缓存是用来减少后端压力, 将压力尽可能的往前推, 减少后端压力,提高网站并发延时 1.缓存常见类型 服务端缓存 代理缓存, 获取服务端内容进行缓存 客户端浏览器缓存 Nginx代理缓存原理 ...
- nginx实现缓存功能
Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.这个缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302 ...
- 七、Nginx学习笔记七Nginx的Web缓存服务
user www; worker_processes 1; error_log /usr/local/nginx/logs/error.log crit; pid /usr/local/nginx/l ...
- 用Nginx+Lua+Redis给百度鹰眼API服务搭建缓存服务中间件(记录过程)
一.环境安装部分 Centos7,Nginx1.14,Redis5.0,luajit-2.1,ngx_devel_kit-0.3.1rc1,lua-nginx-module-0.10.14. 下载安装 ...
- Nginx缓存服务
Nginx缓存服务 1.缓存常见类型 2.缓存配置语法 3.缓存配置实践 4.缓存清理实践 5.部分页面不缓存 6.缓存日志记录统计 通常情况下缓存是用来减少后端压力, 将压力尽可能的往前推, 减少后 ...
- Nginx详解十六:Nginx场景实践篇之缓存服务
缓存类型: 服务端缓存 代理缓存 客户端缓存 Nginx代理缓存 配置语法 使用之前需要先定义一个proxy_cache_path配置语法:proxy_cache_path path [levels= ...
- nginx的web缓存服务环境部署记录
web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输 ...
- 循序渐进nginx(二):反向代理、负载均衡、缓存服务、静态资源访问
目录 反向代理 使用 1.创建代理目标服务端: 2.配置nginx反向代理目标服务端: 3.测试使用: 负载均衡 使用 1.准备服务端 2.修改nginx配置 3.测试 负载均衡策略 负载均衡的额外参 ...
随机推荐
- WebService学习总结(三)——使用JDK开发WebService(转)
一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...
- 【linux学习笔记四】文件搜索命令
一 文件搜索 locate //在后台数据库中按文件名搜索 搜索速度更快 locate 文件名 //locate命令所搜索的后台数据库 /var/lib/mlocate //更新数据库 updated ...
- CentOS7使用yum安装RabbitMQ
转自:https://jingyan.baidu.com/article/456c463b16f3820a583144a1.html 登录名:admin 密码:admin 1. 如果安装后web界 ...
- 15点睛Spring4.1-TaskExecutor
转发:https://www.iteye.com/blog/wiselyman-2212679 15.1 TaskExecutor spring的TaskExecutor为在spring环境下进行并发 ...
- Juniper总结
Juniper的路由器分为两个部分——RE和PFE.不过貌似大部分路由器都分为这两个部分.... Routing Engine: 当密码授权通过之后,用户就进入了RoutingEngine中,在其中可 ...
- Spring MVC如何获取请求中的参数
目录 一.获取URL中路径参数 1.1 @PathVariable 注解 1.2 @PathParam 注解 二.获取请求参数: 2.1 GET请求 2.1.1 获取请求中的单个参数:@Request ...
- LVS-TUN模式
TUN模式: 其实数据转发原理和上图是一样的,不过这个我个人认为主要是位于不同位置(不同机房):LB是通过隧道进行了信息传输,虽然增加了负载,可是因为地理位置不同的优势,还是可以参考的一种方案: 优点 ...
- [转帖]LINUX下使用rinetd端口转发
LINUX下使用rinetd端口转发 https://www.iteye.com/blog/lvinie-1167701 . 本来想自己写一下 发现没必要. 并且原作者提供了pan.baidu.com ...
- 关于wireshark的过滤器规则学习小结
关于wireshark的过滤器规则学习小结 [前言] 这两天一直在熟悉wireshark的过滤器语法规则,以前也接触过这个工具,但只是学校老师教的如何去选择一个接口进行抓取,以及如何去分析一个包的数据 ...
- jdbc连接oracle的三种方法
jdbc连接oracle的三种方法 使用service_name,配置方式:jdbc:oracle:thin:@//<host>:<port>/<service_name ...