美文网首页
【扫盲】Nginx 是什么?和 Apache 什么关系?

【扫盲】Nginx 是什么?和 Apache 什么关系?

作者: Queenie的学习笔记 | 来源:发表于2019-09-20 11:26 被阅读0次

作为一个测试从业者,势必会需要了解到测试环境搭建、网络协议方面的知识,之前从网上零散的学到一些关于环境搭建的操作,但仍然对整个项目的架构不是很清楚。多学习网络方面的基础知识,对项目的测试开展工作十分有帮助。

1. 几个概念

之前我在虚拟机模拟搭建公司的测试环境以及系统迭代上线的时候,总是听到开发说到过几个概念,当时似懂非懂。一个是【轮询分发】,一个是【反向代理】,一个是【负载均衡】。听名字好像也懂,但原理是什么,不看点书或文章,你还真说不上来。


你知道这几个概念吗

先解释一下:Nginx 和 Apache 一样,都是一种 Web 服务器。
他们都是基于REST架构风格,以URI和URL作为沟通依据,通过HTTP协议提供网络服务。(这里的REST是什么不懂,需要百度了解)

2. 搭建项目,选择 Nginx ,还是 Apache ?

Nginx 对比 Apache

Nginx 由于其自由、开源、高性能的优点,目前被广泛用于 HTTP服务器和反向代理服务器。例如我们公司的项目采用的就是1台Nginx+3台Apache的配置,Nginx作为反向代理,采用轮询分发机制。

3. 两种模式的区别

两种模式的区别

4. 示意图和拓扑图

正向代理 反向代理
同一个应用场景下 区别图

在正向代理中,Proxy和Client同属于一个LAN(图中方框内),隐藏了客户端信息;
在反向代理中,Proxy和Server同属于一个LAN(图中方框内),隐藏了服务端信息

5. 现在再来说说【负载均衡】和【轮询分发】

(1)负载量

客户端发送的、Nginx反向代理服务器接收到的请求数量。

(2)均衡规则

请求数量按照一定的规则进行分发到不同的服务器处理的规则。

(3)负载均衡

将服务器接收到的请求按照规则分发的过程。

(4)Nginx支持的负载均衡调度算法方式

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

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

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

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

6. 几种常用web服务器对比

3种web服务器比对

参见原文:「芋道源码」公众号《Nginx 是什么 ? 能干嘛 ?》

相关文章

网友评论

      本文标题:【扫盲】Nginx 是什么?和 Apache 什么关系?

      本文链接:https://www.haomeiwen.com/subject/ywbductx.html