nginx之正向代理、反向代理和负载均衡(重点)-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一、nginx的两种代理方式
1、七层代理http协议
2、四层代理tcp/udp流量转发
二、四层代理和七层代理
一四层代理基于tcp/udp协议的ip和端口转发数据包
1、四层代理无法获取http请求中的url信息只能对tcp/udp的数据包进行转发对请求没有任何操作和处理
二七层代理代理的是http的请求和响应
1、客户端请求代理服务器由代理服务器转达客户端的http请求转发到后端的服务器可以是单台、或一组
2、后端的web server再把响应送到代理服务器最后再到客户
三四层代理和七层代理的区别重点
1、七层代理
1七层代理走的是用户态需要对http的请求进行处理和解析解析过程中可以根据请求头和请求体的内容进行流量控制、内容过滤
2七层代理转发速度比较慢但是提供的功能更高级用户的体验更好
3七层代理可以对IP和端口进行转发也可以对域名进行代理
2、四层代理
1四层代理走的是内核是基于IP和端口号只负责将流量IP和端口转发到后端服务器不对请求做任何处理只是负责转发
2四层代理速度较快但无法提供更高级的功能只是转发
3四层代理只能对IP和端口进行转发
3、选择场景
1需要对http请求进行控制和处理只能选择七层代理最常见的代理方式
2只需要转发tcp/udp数据包流量可以选择四层代理也可以选择七层代理
4、模块
1七层代理的模块只能写在http模块的全局配置中upstream
①upstream用于处理http请求支持反向代理、负载均衡缓存功能
②在upstream模块中可以配置多个服务器
2四层代理的模块只能写在全局模块当中的单独配置stream
①stream代理是无谓协议只管流量
四四层代理和七层代理的配置
1、四层代理的配置只能写在全局配置当中stream
stream {
upstream test {
server 20.0.0.12;
server 20.0.0.14;
#默认轮询
#加权轮询
#最小连接数
}
server {
listen 80
proxy_pass http://test
}
}
2、七层代理的配置
1正向代理
location {
proxy_pass http://20.0.0.12;
}
2反向代理
①在http的全局配置中定义upstream模块、负载均衡的算法配置在upstream模块中
upstream yyy {
least_conn;
ip_hash
url_hash
server 20.0.0.12 weight;
server 20.0.0.13 weight;
}
②在server块的location中指定代理服务器的方法
location {
proxy_pass http://yyy
}
三、正向代理和反向代理
一正向代理
1、都是通过代理服务器访问明确指向后端服务器一般都是一对一
2、客户端也是访问代理服务器代理服务器转发请求客户端只代理服务器的地址而后端的web server的IP地址客户端也不知道
二反向代理
1、代理服务器转发http请求但是客户端不知道访问的是哪一台服务器
2、都是通过代理服务器访问一个代理服务器会有多台后端服务器供代理服务器进行转发请求一对多
3、只有一对多才涉及负载均衡的算法问题
三正向代理的配置方法类似vpn、加速器
nginx1作为客户端、nginx2和nginx3作为代理服务器
通过20.0.0.11直接访问20.0.0.12
四反向代理的配置客户端通过代理服务器访问但后端有多台企业架构都是反向代理
四、负载均衡算法
一rr(round robin)轮询负载均衡最简单的算法
1、含义请求轮流分配到后端服务器是默认算法可以不加
2、特点默认算法每发起一次都是新的请求在服务器上没有缓存
3、适用场景服务器处理能力相近而且对访问量比较小的网站适用
二加权轮询weight建立在默认轮询算法之上
1、含义为后端服务器设置不同的权重通过权重分发客户端的请求
2、特点
1处理能力强的服务器可以分配的权重值要高一些
2轮询次数基本上按照权重进行分配服务器上也没有缓存
3有可能导致权重高的服务器被频繁的请求响应权重低的可能闲置这时会和另外一种算法配合使用——最少连接数算法
3、适用场景中大型网站可以使用加权轮询
三最小连接数算法会把请求发送到连接数量较小的后端服务器least_conn
1、特点
1最小连接数算法可以单独使用但是一般都是结合加权轮询一起使用避免所以的请求都发送到处理能力强的服务器可以提高整个集群的稳定性
2、适用场景中型网站、大型网站日常访问可以满足
四ip_hash
1、含义根据客户端的IP地址解析出一个hash值然后将请求值发送到对应的后端服务器下一次用户再访问时同一客户端的请求将会被分配到同一台服务器
2、特点
1ip_hash第一次访问之后后续的访问是有缓存的
2如果后端服务器的数量发生变化可能会进行重新分配请求的后端服务器可能会发生变化后端服务器数量变少一定会变化后端服务器的数量增加请求的地址未必发生变化
3缩容的情况业务量比较少不需要那么多后端服务器才会缩容一般只会扩不会缩
3、适用场景ip_hash适用于高并发请求不会跳转请求的是缓存用于把请求的客户端地址转发到固定的服务器
五url_hash
1、含义根据请求的url地址计算hash值然后将请求发送到相应的后端服务器。相同的url地址请求会被分配到相同的服务器
2、特点
1url_hash访问之后后续都是访问缓存可以降低后端服务器的压力
2url地址发生变化或者后端服务器数量也发生变化可能会变更后端服务器的地址
3、适用场景url_hash和ip_hash可以结合在一起使用可以适用于并发较高的场景
五、基于域名的反向代理
nginx1作为客户端、nginx2和nginx3作为代理服务器
一客户端配置
二代理服务器配置
六、配置四层的反向代理全局模块中配置基于ip和端口
负载均衡算法有些是无法在四层代理使用的
1、四层代理中可以使用加权轮询、最小连接数算法实现负载均衡
2、但是ip_hash和url_hash这两种算法不可以在stream中使用只有http协议可以请求和处理四层不能对请求进行任何处理只是转发数据包。因此、只有http七层代理可以处理请求地址和请求的url