代理,反向代理,负载均衡

本文介绍了Nginx作为HTTP服务器、反向代理服务器和负载均衡器的角色。对比了Nginx与Apache的区别,强调了Nginx在并发处理上的优势。详细解释了正向代理用于访问受限网站,反向代理用于隐藏内部服务器IP并提升安全性。讨论了负载均衡的重要性,并概述了Nginx的几种负载均衡算法,如轮询、ip_hash和公平调度等。

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

说到反向代理,肯定就会联想到nginx

nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。

niginx与apache相比:

nginx:

  • 轻量级,比apache占用更少的内存和资源
  • 抗并发,nginx处理请求是异步非阻塞的(协程是同步阻塞单线程),支持更多的并发连接,apache是阻塞型的,在高并发下能够保持低资源低消耗高性能
  • 配置简洁
  • 编写模块相对简单

apache:

  • rewrite,比nginx的rewrite强大
  • 模块超多
  • bug少,nginx的bug相对较多
  • 非常稳定

代理(正向代理)

比如我们访问国外网站,可能没办法访问,这时候就需要找能够访问国外网站的代理服务器

相当于我们访问代理服务器(比如在香港),代理服务器访问外国网站,外国网站将返回内容发送给代理服务器

代理服务器再将内容发给我们,有些黑客会用多重代理来隐藏自己,因为代理隐藏了真是客户端的的信息

反向代理

反向代理可以实现分布式部署,客户机发送请求给反向代理服务器(一般是nginx),反向代理服务器在将请求转发给真实的服务器。似乎和正向代理很像,但是,反向代理服务器是部署在公网的,而真实服务器在内网,这有利于提高安全性,真实服务器只是把一些开放的端口设置在反向代理服务器上,我们访问的ip,端口都是反向代理的ip端口,这样就隐藏了真实服务器的IP,从而一定程度上提高了安全性,实际上大部分服务器都是部署在内网的。这种隐藏的的机制和计算机网络中的NAT很像。

因为进行请求的时候,URL先被DNS解析成一个IP,所以大型网站一般会有一个接客的服务器,然后这个服务器可能直接将请求透传给下一级反向代理服务器群

 负载均衡

有了反向代理的概念,负载均衡也会比较好理解,因为我们可以设置很多反向代理服务器,可以设置很多真实服务器,每台真实服务器的请求就可以大致降到request/(M x N),这其实就是硬件负载均衡,成本高昂,稳定性和安全性好

软件负载均衡:利用程序结合硬件实现的一种消息队列分发机制,比如kafka+zookeeper

nginx的负载均衡算法:

weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。

ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。

fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块

url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值