什么是Nginx
Nginx是一个高性能的HTTP反向代理服务器。特点是占用内存少,并发能力强。实际上Nginx的并发能力是同类的网页服务器中最好的。
Nginx作为Web服务器
Nginx可以作为静态页面的Web服务器,同时还支持CGI协议的动态语言,比如Perl, PHP等。但是不支持Java,Java程序只能和Tomcat配合使用。Nginx专门为性能优化而开发,性能是其最重要的考量,实际上非常注重效率。可以经受高负载的考验,有报告表明可以支持50,000个并发连接数。
Nginx的特点:
-
反向代理
正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务器称为正向代理。
Nginx不仅可以做反向代理,实现负载均衡,还能用做正向代理实现上网功能。
反向代理:客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。我们只需要将请求发送到反向代理服务器上即可。由反向代理服务器选择目标服务器获取数据后,在返回给客户端。此时反向代理服务器和目标服务器对外是一个服务器。暴露的是代理服务器的地址,隐藏了真实服务器的IP地址。
- 负载均衡
客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库交互,服务器处理完毕后,再将结果返回给客户端。
这种结构对于早期的系统相对单一,并发请求较少的情况下是比较合适的,成本低。但随着信息量的不断增加,访问量和数据量的飞速增长,以及系统业务的复杂度迅速增加。这种架构会造成服务器相应客户端的请求日益缓慢。并发量特别大的时候还容易造成服务器的直接崩溃。很明显这是由于服务器的性能瓶颈造成的,如何解决这种情况呢?
我们首先想到的可能是升级服务器的配置,比如提高CPU的执行频率,加大内存等提高机器的物理性能来解决此问题。但是我们知道摩尔定律日益失效。硬件性能的提升已经不能满足日益提升的需求了。比如天猫双十一当天,某个日销产品的瞬间访问量是及其巨大的,那么类似上面的系统架构,将机器增加到我们现有的顶级配置,都不能满足需求,那怎么办呢?
既然纵向解决问题的办法行不通,那么横向增加服务器的数量呢。这时集群的概念就诞生了,单个服务器解决不了我们可以增加服务器的数量,然后请求分发到各个服务器上,将原先的请求集中到单个服务器上的情况改为请求分发到多个服务器上。将负载分发到多个服务器上,也就是我们所说的负载均衡。
-
动静分离
为了加快网站的解析速度。可以把动态的页面和静态的页面尤不同的服务器进行解析,加快解析的速度,降低原来单个服务器的压力。
-
高可用
网友评论