还没有听说过Nginx?然后你一定听说过它的“同行”Apache! Nginx是一种类似Apache的WEB服务器。基于REST架构风格,统一资源标识符URI或统一资源定位符URL用作通信基础,以通过HTTP协议提供各种网络服务。
但是,这些服务器被设计为受当前环境的限制,例如当时用户的大小,网络带宽,产品功能和其他限制以及它们各自的定位和开发是不同的。这也使得每个WEB服务器都有自己独特的特性。
Apache有着长期的发展历史,是世界上无可争议的最大服务器。它具有很多优点:稳定性,开源性,跨平台性等。它已经存在了太长时间,并且在其崛起的时代,互联网行业远远不如现在。所以它被设计成一个重量级人物。它不支持高度并发的服务器。在Apache上运行数万次并发访问会导致服务器消耗大量内存。操作系统的进程或线程切换也会消耗大量CPU资源,从而导致HTTP请求的平均响应速度降低。
所有这些都使Apache无法成为高性能的WEB服务器,轻量级的高并发服务器Nginx应运而生。
俄罗斯工程师Igor Sysoev,他在为Rambler Media工作期间在C中开发了Nginx。 Nginx一直为Rambler Media提供优质稳定的服务作为Web服务器。
然后,Igor Sysoev打开了Nginx代码,并给了它一个免费的软件许可证。
由于:
Nginx使用事件驱动的体系结构,使其能够支持数百万个TCP连接
高度模块化和免费的软件许可证是第三方模块的出现(这是一个开源时代〜)
Nginx是一个跨平台的服务器,可在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS和其他操作系统上运行。
这些出色的设计确保了稳定性所以,Nginx很着火!
使用Nginx
Nginx是一个免费的开源高性能HTTP服务器和反向代理服务器;它也是一个IMAP,POP3,SMTP代理服务器; Nginx可以用作网站发布的HTTP服务器,Nginx可以用作反向代理执行负载平衡实现。
关于代理商
谈到代理商,我们必须首先定义一个概念。所谓代理人是代表,渠道;
此时,我们设计了两个角色,一个是代理角色,另一个是目标角色。代理角色通过代理访问目标字符以完成某些任务的过程称为代理操作过程;喜欢商店里的生活〜嘉宾到adidas商店买了一双鞋子,这家店是代理商,代理商角色是adidas制造商,目标角色是用户。
转发代理
在我们说反向代理之前,让我们看看转发代理。转发代理也是每个人最容易接触的代理模式。我们将分别从软件方面和生活两个方面来处理前向代理处理模式。解释所谓的转发代理。
在今天的网络环境中,如果我们想要根据技术需求访问一些外国网站,您会发现无法通过浏览器访问位于国外的网站。这时,每个人都可以使用操作FQ。要访问,FQ主要是为了找到可以访问外国网站的代理服务器。我们将请求发送到代理服务器,代理服务器访问外国网站,然后将访问的数据传递给我们!
上述代理模式称为转发代理。转发代理的最大特点是客户端非常清楚要访问的服务器地址;服务器只知道从哪个代理服务器请求,并且不清楚从哪个特定客户端去;该模式掩盖或隐藏真实的客户信息。让我们看一下图表(我把客户端和前向代理放在一起,属于一个环境,我稍后会介绍):
一篇文章,了解Nginx是什么,可以做些什么
如果已知转发代理服务器的IP地址,则客户端必须设置转发代理服务器,以及代理的端口。如图所示。
一篇文章,了解Nginx是什么,可以做些什么
总结:转发代理,“它是客户端”,是客户端和源服务器之间的服务器。为了从原始服务器获取内容,客户端向代理发送请求并指定目标(原始服务器),然后代理将请求转发到源服务器并将获得的内容返回给客户端。客户端必须进行一些特殊设置才能使用转发代理。转发代理的目的:
访问之前无法访问的资源,例如Google
可以做缓存,加快资源访问速度
授权客户端访问并在线验证
代理可以记录用户访问记录(在线行为管理)并从外部隐藏用户信息。
反向代理
了解什么是正面代理,我们继续看反向代理的处理,例如,我的大日子宝藏网站,同时连接到网站的访客数量爆炸,单个服务器远离满足不断增长的人们购买的欲望,此时有一个熟悉的术语:分布式部署;
那就是通过部署多个服务器来解决访问限制的问题;宝藏网站的大多数功能都是由Nginx直接实现的,用于反向代理,在封装了Nginx和其他组件之后,它们有一个很高的名字:Tengine。
有兴趣的儿童鞋可以访问Tengine的官方网站获取具体信息:http://tengine.taobao.org/。然后,反向代理实现什么样的分布式集群操作?让我们看一个原理图(我把服务器和反向代理放在一起,属于一个环境,我稍后会介绍):
一篇文章,了解Nginx是什么,可以做些什么
通过上图,可以清楚地看到多个客户端发送给服务器的请求在收到Nginx服务器后,按照一定的规则分发给后端业务处理服务器进行处理。此时〜请求的来源是客户端是明确的,但请求是由哪个服务器不清楚具体处理,Nginx扮演反向代理角色。
客户端是不知情的代理。反向代理对外界是透明的。访问者不知道他正在访问代理。由于客户端不需要任何配置,因此可以访问它。
反向代理,'它是服务器端',主要用于服务器集群分布式部署,反向代理隐藏服务器信息。
反向代理的作用:
为了确保Intranet的安全性,反向代理通常用作公共网络访问地址,Web服务器是Intranet。
负载平衡,通过反向代理服务器优化网站负载
项目方案
通常,当我们实际处理项目时,转发代理和反向代理可能存在于应用程序场景中。代理代理客户端请求访问目标服务器。目标服务器是反向简单服务器。 ,用于多个实际业务处理服务器的反向代理。
具体拓扑结构如下:
一篇文章,了解Nginx是什么,可以做些什么
两者的区别
图表用于说明正向代理和反向代理之间的差异,如图所示。
一篇文章,了解Nginx是什么,可以做些什么插图:
在转发代理中,代理和客户端属于同一个局域网(在框中),隐藏客户端信息;
在反向代理中,Proxy和Server属于同一个LAN(在框中),隐藏服务器信息;
事实上,Proxy在两个代理中的作用是发送和接收服务器的请求和响应,但从结构的角度来看,这只是交换的问题,因此稍后出现的代理方法称为反向代理。
负载均衡
我们已经定义了所谓的代理服务器的概念。然后,Nginx扮演反向代理服务器的角色。使用什么样的规则来分发请求?未使用的项目应用场景,是否可以控制分布式规则么?
此处提到的客户端收到的并由Nginx反向代理服务器发送的请求数是我们正在讨论的负载量。根据某些规则将请求数量分配给不同服务器的规则是均衡规则。
因此,根据规则分发服务器接收的请求的过程称为负载均衡。
负载均衡在实际的项目运行过程中,有两种硬件负载均衡和软件负载均衡。硬件负载均衡也称为硬负载,如F5负载均衡,这相对昂贵且价格昂贵,但数据稳定性稳定等特点。有一个很好的保证,如中国移动中国联通,公司将选择硬装操作;更多公司会选择使用软件负载均衡来解决成本问题,软件负载均衡是利用现有技术结合主机硬件实现的消息队列分配机制。
一篇文章,了解Nginx是什么,可以做些什么
Nginx支持的负载均衡调度算法如下:
权重轮询(默认):接收的请求按顺序逐个分配给不同的后端服务器。即使后端服务器在使用期间关闭,Nginx也会自动将服务器从队列中剔除并请求接受。不会受到影响。这样,可以为不同的后端服务器设置权重值,以调整不同服务器上的请求分配率;权重数据越大,分配给请求的概率就越大;权重值,主要针对实际工作环境中的不同后端服务器硬件配置进行调整。
Ip_hash:根据发起客户端ip的哈希结果匹配每个请求。具有相同固定IP地址的客户端将始终访问同一后端服务器,这也在一定程度上解决了群集部署环境中的会话。共享问题。
公平:智能调整调度算法,根据后端服务器的请求动态分配响应到响应时间,响应时间短。处理效率高,服务器很有可能被分配给请求,响应时间很长。减少要求;一种调度算法,结合了前两者的优点。但是,应该注意的是,默认情况下Nginx不支持公平算法。如果要使用此调度算法,请安装upstream_fair模块。Url_hash:根据访问的url的哈希结果,请求url将指向后端的固定服务器,这可以在Nginx用作静态服务器时提高缓存效率。另请注意,默认情况下Nginx不支持此调度算法。要使用它,您需要安装Nginx哈希包。