龙空技术网

Nginx入门到实战-负载均衡和缓存服务

程序员BUG 505

前言:

此刻兄弟们对“nginx默认缓存多久”大约比较关注,同学们都需要学习一些“nginx默认缓存多久”的相关知识。那么小编同时在网络上搜集了一些对于“nginx默认缓存多久””的相关文章,希望朋友们能喜欢,同学们快快来学习一下吧!

作者:海岛来源:

一、负载均衡

负载均衡的实现方法就是我们上章介绍的反向代理 。将客户的请求通过 nginx 分发(反向代理)到一组多台不同的服务器上

这一组服务器我们称为 服务池(upstream server),池内的每一个服务器称为一个 单元,服务池内将对每一个单元进行请求轮训,实现负载均衡

假设我们有三台服务器,并且假设它们的IP地址,前端负载均衡服务器A(127.0.0.1),后台服务器B(127.0.0.2),后台服务器C(127.0.0.3)

新建文件 proxy.conf,内容如下,上一章介绍的反向代理配置

调度算法

轮训:按时间顺序逐一分配到不同的后端服务器加权轮训:weight值越大,分配到的几率越高ip_hash:每个请求按访问IP的hash结果分配,这样来自同一个IP固定访问一个后端服务器least_conn:最少链接数,哪个机器连接数少就分发给谁url_hash:按照访问的URL的hash结果来分配请求,每一个URL定向到同一个后端服务器hash关键数值:hash自定义key

ip_hash 配置

 upstream xxx { ip_hash; server 127.0.0.2; server 127.0.0.3; }

ip_hash存在缺陷,当前端服务器再多一层时,将获取不到用户的正确IP,获取的将是前一个前端服务器的IP,因此 nginx1.7.2版本推出了 url_hash

url_hash 配置

 upstream xxx { hash $request_uri; server 127.0.0.2; server 127.0.0.3; }

二、缓存服务

1. 缓存类型

服务端缓存:缓存存储在后端服务器,如redis,memcache代理缓存:缓存存储在代理服务器或者中间件上,它的内容是从后端服务器获取的,但是保存在自己本地客户端缓存:缓存在浏览器内的

2. nginx 代理缓存

客户端请求nginx,nginx查看本地是否有缓存数据,若有直接返回给客户端,若没有再去后端服务器请求

3. 分片请求

早期版本 nginx 对大文件的分片请求不支持缓存,1.9版本后slice模块实现了这个功能

前端发起请求,nginx去获取这个请求文件的大小,若超过我们的定义slice的大小,会进行切片,分割成多个小的请求去请求后端,到前端就成为一个一个独立的缓存文件

优势:每个子请求收到的数据都会形成独立文件,一个请求中断了,其他请求不受影响,原本情况请求中断,再次请求文件将从头开始,而开启分片请求,就接下去获取未请求的小文件

劣势:当文件很大或者slice很小时,可能会导致文件描述符耗尽等情况

 语法: slice size; #当大文件请求时,设置size为每个小文件的大小 默认: slice 0; 位置: http/server/location

标签: #nginx默认缓存多久 #nginx 代理缓存