手机网站app,设计 中国官网,wordpress rewrite_rules,qq空间wordpress搬家nginx中有两种代理方式#xff1a;
七层代理#xff08;http协议#xff09;
四层代理#xff08;基于tcp或udp的流量转发#xff09;
一、七层代理
原理#xff1a;客户端请求代理服务器#xff0c;由代理服务器转发客户端的http请求#xff0c;转发到内部的服务器…nginx中有两种代理方式
七层代理http协议
四层代理基于tcp或udp的流量转发
一、七层代理
原理客户端请求代理服务器由代理服务器转发客户端的http请求转发到内部的服务器。服务器是单台或一组。后台的web server再把响应送达代理服务器最后到达客户端
反向代理——客户端不知道访问的是哪台web服务器具体访问哪台是由负载算法决定的
正向代理——客户端知道访问的是哪台web服务器 二、四层代理
基于tcp /ip协议层的转发代理方式。基于ip和端口号实现负载均衡或正向代理。四层代理无法获取http请求中的URL信息只能对tcp/udp的数据包进行转发
重点四层代理和七层代理之间的区别
1、七层代理走的是用户态需对http的请求进行处理和解析解析过程中可以根据请求头和请求体的内容进行一定的操作流量控制、内容过滤等。转发速度比较慢但提供的功能更高级用户体验更好——市面上常用
2、四层代理基于ip地址和端口号只负责将ip转发到后端服务器不对请求做任何处理只负责转发且四层转发走的是内核态七层代理需校验所以四层转发速度较快。四层代理无法提供更高级的功能只是转发
3、选择场景
七层代理需要对http请求进行控制和处理只能选择七层代理
四层代理只转发tcp或udp数据包选择四层或七层均可
七层代理可以对ip和端口进行转发也可以对域名进行代理
四层只能对ip和端口进行转发
有些负载均衡算法无法在四层代理使用
4、模块
七层代理只能写在http模块的全局配置中
配置命令upstream
upstream模块用于处理http请求支持反向代理负载均衡缓存功能。在upstream模块中可以配置多个服务器
四层代理只能写在全局模块中的单独配置
配置命令stream模块
四层的反向代理
三、面试题负载均衡算法
1、rr(round robin)——轮询负载均衡最简单的算法不用
原理请求轮流分配到后端服务器。默认算法可以不加
每发起一次都是新的请求在服务器上没有缓存
2、weight——加权轮询常用
weight2;
建立在轮询算法基础上的
原理为后端服务器分配不同的权重处理能力强的服务器可以分配的权重值要高一些。轮询次数基本上按照权重进行分配的。服务器上也没有缓存
权重高的服务器会被频繁的请求响应权重低的可能闲置会和另一种算法配合使用最少连接数算法
3、最少连接数算法
least_conn;
原理把请求发送到连接数量较少的后端服务器
可以单独使用此算法但一般结合加权轮询一起使用避免所有的请求都发送到处理能力强的服务器可以提高整个集群的稳定性
适用于中型网站大型网站的日常访问也满足
4、ip_hash算法
ip_hash;
原理iphash会根据客户端的ip地址解析出一个hash值然后将请求发送到对应的后端服务器下一次用户再访问时同一客户端的请求将会被分配到同一台服务器
特点①ip_hash第一次访问之后后续访问有缓存
②如果后端服务器的数量改变可能会重新分配服务器
③请求不会跳转请求的是缓存——减轻服务器压力
5、url_hash算法
hash $request_uri consistent;
原理根据请求的url地址计算hash值然后将请求发送到后端服务器相同的url地址请求会被分配到同一个服务器
特点一般url_hash和ip_hash结合在一起使用。适用于并发较高的场景。主要是ip_hash和ip_hash访问之后后续访问都是访问缓存可以减轻后端服务器的压力
四、实验
1基于IP地址七层正向代理实验
vim /usr/local/nginx/conf/nginx.conf vim /usr/local/nginx/html/index.html 测试 2基于IP地址七层反向代理实验
实验条件nginx1——客户端——20.0.0.11
nginx2——服务端1——20.0.0.21
nginx3——服务端2——20.0.0.31
nginx4——服务端3——20.0.0.41
实验步骤
1、nginx1 2、nginx2 3、nginx3 4、nginx4 5、测试 结论默认轮询算法。轮流分配到每个后端服务器
6、结合负载均衡算法 结论按照算法规则分配后端服务器。注意同一ip地址请求ip_hash和url_hash算法会有缓存分到到同一后端服务器
3基于域名的七层反向代理实验
1、nginx1 ngin2 nginx3 nginx4 测试 4四层反向代理实验
nginx1 nginx -t出现“ unknown directive stream”错误。
原因在编译安装nginx时没有安装stream模块nginx -t 无法识别stream
解决思路在nginx源码包目录下重新配置./configure --with-stream并且make make install
2、nginx2 3、nginx3 4、nginx4 5、测试