Nginx Note01——Nginx简介、优点和用途

      Nginx的出现,源于著名的“C10K”问题(即:服务器如何支持10K个并发连接?)。Nginx自2002年开始研发,2004年发布第一个公开版本,2006年开始完善相关功能,如支持win32,四层反向代理和负载均衡等。2019年,Nginx被F5收购,收购后的Nginx保持开源版和商业版并行的运营模式。2021年1月的Netcraft Web服务器市场占有率分析报告显示,Nginx的市场占有率已经超过Apache和Microsoft,位居第一。

                                                                                                                                           ——题记

一、Nginx的优点

  1. 高并发

能够处理高并发请求,是Nginx最吸引人的特点,也是其促使其诞生并迅速发展壮大的最重要的因素。Nginx是用C语言编写的,基于事件驱动模式,异步非阻塞机制来并发处理请求。worker进程默认亲和到不同的CPU核上,避免了不同进程抢占CPU资源的问题和调度带来的开销。Nginx还针对不同的操作系统做了不同的优化,比如在选择事件队列时,Darwin系统选择kqueue,Linux系统选择epoll,Windows选择select。

【注:事件驱动模式和异步非阻塞机制将在后续文章中详细讲解】

     2.高稳定性

模块化的架构使Nginx各部分的功能完全解耦,master进程和worker进程一对多的方式分开了控制层面和数据层面,确保在worker进程发生异常时能够及时发现并纠正,也给它的热升级提供了可能性。另外,Nginx没有采用多线程的方式来实现worker进程,使得各个worker进程相对独立。

     3.高扩展性

Nginx以模块为单位组织相应的配置解析和功能实现,做到了模块内高内聚,模块间低耦合。一些常用的数据结构(链表、队列、红黑树等)都做了有效的封装,供开发者使用。

二、Nginx常用功能

  1. 反向代理

正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求,将获得的内容返回给客户端。正向代理的情况下,客户端必须要进行一些特殊的设置才能使用。

反向代理是指以代理服务器来接收客户端的请求,然后将请求转发给内部网络上的服务器,将从服务器上得到的结果返回给客户端,此时代理服务器对外表现为一个反向代理服务器。

对于客户端来说,反向代理就相当于目标服务器,只需要将反向代理当作目标服务器一样发送请求就可以了,并且客户端不需要进行任何设置。

简言之,正向代理,替客户端请求服务端;反向代理,替服务端接收客户端请求。

      2.负载均衡

nginx的负载均衡策略有六种:

(1)轮询(默认策略,nginx自带策略):我上面的例子就是轮询的方式,它是upstream模块默认的负载均衡默认策略。会将每个请求按时间顺序分配到不同的后端服务器。

(2)weight(权重,nginx自带策略):指定轮询的访问几率,用于后端服务器性能不均时调整访问比例。

(3)ip_hash(依据ip分配,nginx自带策略):指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,可以解决session不能跨服务器的问题。

(4)least_conn(最少连接,nginx自带策略):把请求转发给连接数较少的后端服务器。

(5)fair(第三方):按照服务器端的响应时间来分配请求,响应时间短的优先分配。

(6)url_hash(第三方):该策略按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,需要配合缓存用。

      3.静态缓存

据统计,web应答流量中有超过一半的数据是静态资源,我们可以通过静态缓存把这些文件缓存下来。Nginx的静态缓存功能有效减少了服务器在计算和传输资源时产生的性能消耗,配以gzip功能还可以减少网络带宽的消耗。静态资源包括动态页面中的静态部分、静态页面和资源文件等。

     4.Web服务器

Web服务器是Nginx的基础功能。用户可以使用server配置块定义自己的Web服务器,如监听的端口、协议类型、SSL及网络传输行为;结合Location块定义URL及请求发生时的响应逻辑。

Nginx Unit是Nginx商业版提供的轻量级动态服务器方案,在其中集成了多种市面上主流语言的运行时环境(Runtime Environment),可以在宿主机或容器中独立运行。

      5.安全和访问控制

Nginx提供了丰富的安全和访问控制功能,这些功能有的是通过Nginx的核心模块实现的,有些是通过第三方模块实现的。Nginx商业版对这些功能做了进一步加强。例如,下面4种常见的安全和访问控制场景:

(1)SSL卸载/加载:四层、七层服务器流量的加解密

(2)HTTP认证访问控制:实现对前端请求JWT或者Basic Auth的认证方式

(3)针对特定资源的访问控制:根据资源的类型和URL路径做控制

(4)动态黑白名单:针对客户端ip或key-value模块实现对ip的访问控制

三、Nginx发行版

Nginx目前有开源版和商业版两种。

开源版主要有两个分支:Mainline(当前活跃的开发分支)和Stable(稳定分支)。

商业版提供了丰富的功能,如负载均衡、API管理、服务发现和治理、WAF(应用防火墙)、Nginx控制和数据分析等。

       基本情况就介绍到这里,后面将从Nginx的几个特性及其原理来做详细的分析,试图揭开Nginx风靡全球的原因。

你可能感兴趣的:(Nginx,nginx,服务器,microsoft)