nginx的正向代理和反向代理:
正向代理以及缓存配置:
代理:客户端不再是直接访问服务端,通过代理服务器访问服务端。
正向代理:面向客户端,通过代理服务器的ip地址访问目标服务端
服务端只知道代理服务器的地址,真正的客户端ip可以隐藏。
反向代理:又叫负载均衡
正向代理我们是知道代理服务器的地址,也知道访问的web服务器
反向代理 客户端还是访问代理地址 但具体的访问web服务器是哪一台不知道
作用:请求分配到多个后台服务器上,分担服务器的负载,提供系统的可用性和稳定性
缓存加速
安全保护
四层代理和七层代理的区别
正向代理,在http模块的server和location中
http模块配置都是七层代理
七层就是应用层 使用的是http协议,可以对请求进行解析处理,7层代理走的是用户态,应用协议和程序功能
7层的处理速度相对比较慢,但是可以提供更高级的功能和更好的用户体验
四层是传输层,ip+端口 请求转发到后端,无法对请求进行深入的解析和处理,只是对请求流量的转发
四层转发是内核态,内核处理、内核转发,速度较快
应用场景:7层代理 一般是对外提供访问,需要对请求进行处理。包括安全,过滤,流量控制
4层代理 一般都是内部使用,不需要对流量、请求做特殊处理
配置方法以及负载均衡算法
反向代理=负载均衡
配置方法:
七层只能写在http模块当中,命令 upstream
四层只能写在全局配置中,不能写在http模块中,stream
负载均衡算法:
七层
1.轮询 round robin rr:轮询算法是最简单,最基础的算法 ,也是默认算法 请求轮流分配到后端服务器
轮询算法适用于后端服务器处理能力相同,访问量不大的情况。
2.加权轮询:在轮询的基础上,给每个后台服务器设置不同权重。流量的分配不一定按照权重比来
权重高度被转发的概率大,权重低的相对概率小
后端服务器的性能有差异,性能高,权重相对更高,性能低,权重相对小
weight=数字
3.最小连接数算法,least_conn 会把请求发送到当前连接数较少的后端服务器上
后端服务器处理任务 耗时不同 的情况 可以避免请求集中在处理能力更强的服务器上
4.ip_hash
iphash根据算法,计算客户端ip地址的hash值,然后将请求转发到相应的服务器
第一次访问网址时,就会计算出hash值,会把请求分配到一个服务器,但是下一次客户端如果使用相同的ip地址再次访问,就不会再分配到其他的服务器。除非后台服务器的算法变更,或后台服务器数量变化,这时才会更改访问的服务器
适用场景:高并发。如果客户端进来之后,不停的轮换服务器,会加重服务器的负担,固定在一台服务器上,降低了代理服务器的压力,也节约了资源
5.RUL_hash
根据请求的rul地址计算hash值,再转发,每次请求的url都一样,就会被分配到同一个服务器
转发的地址发生变化,后台服务器清理缓存或服务器数量发生变化 才会变化
四层代理:
配置方式只能在全局模块,算法也比较少,只能是ip+端口,没有ip_hash 和rul_hash算法