nginx的反向代理和负载均衡

本文详细比较了四层和七层代理的工作原理、速度优劣,以及它们在负载均衡、缓存加速和安全保护中的应用。重点介绍了正向代理与反向代理的区别,以及Nginx中实现负载均衡的不同算法如轮询、最小连接数、IPhash和URLhash。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

反向代理:
  • 四层代理
    • 在传输层基于tcp/ip协议进行代理转发,只能实现基于IP和端口的负载均衡,四层代理无法获取http请求的url信息,只是对数据包转发,进行流量分发
  • 七层代理
    • 基于http协议的应用层代理,代理的是http的请求和响应
四层代理和七层代理的区别:
  • 转发速度:
    • 四层速度快:四层只需要转发数据包,而且是通过内核态转发(相当于走硬件)。不负责处理http请求,也不对数据包进行处理
    • 七层速度慢:需要对http的协议进行处理,通过用户态转发(相当于走软件),需要进行一系列的验证和处理流程
  • 使用场景:
    • 四层适用于需要处理大并发连接请求的场景,只是针对tcp或者udp流量的转发
    • 七层代理不适合高并发,需要对http请求进行深入处理和控制的场景,web应用程序的负载均衡等
正向代理和反向代理的区别:
  • 反向代理:客户端访问代理服务器,代理服务器接收客户端的http请求,然后由代理服务器请求转发到内部的一组服务器上进行处理,响应结果也由代理服务器返回给客户,在此过程中,客户端并不知晓自己访问的是代理服务器还是内部服务器,从而达到隐藏内部服务器的真实IP地址的目的,七层代理就是反向代理的典型

  • 正向代理也是访问代理服务器,但是客户端知道自己在访问代理服务器,由代理服务器来进行地址请求,vpn就是正向代理的典型

反向代理的作用:
  • 负载均衡,请求分配到后台多个服务器上,分担服务器的负载压力,可以提高系统的可用性和稳定性
  • 缓存加速,会话保持
  • 安全保护,请求的是代理,响应的也是代理。后台的真实服务器隐藏了,保证了架构的安全
  • 简化了整个系统的结构,只需要代理服务器和几台后端服务器,就可以形成一个逻辑服务,这个服务架构可以随时进行弹性伸缩(随时添加服务器)
反向代理如何实现:
  • 七层代理模块:upstream 只能定义在http的模块之中
  • 四层代理模块:stream 只能定义在全局模块当中,而且stream只能是ip+端口
负载均衡的算法
  • 默认算法:轮询,最简单的算法,将请求轮流地分配到后端的算法,使用于后端服务器处理能力相近的情况,可以不声明
  • 加权轮询,给后端服务器赋予不同的权重,在默认轮询的基础上,处理能力更高的服务器可以分配到更多的请求,权重高的会更多地被访问
  • 最小连接数算法,配置后会把请求转发到当前连接数最少的后端服务器上,避免请求都集中在一台服务器上,一般配合加权轮询使用
  • IP hash 算法,根据客户端的IP地址,计算出一个哈希值,然后将请求发送到对应的后端服务器,同一个客户端的请求会被分配到上一次转发的服务器,这就是nginx实现会话保持的方法
  • URL hash 算法,根据客户端请求的URL计算一个哈希值,然后将请求发送到对应的后端服务器,访问的URL相同时会被分配到同一台服务器,请求的地址发生变化,轮询的服务器可能就会发生变化(不一定,运气好还是之前那台)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值