Nginx 用途

Nginx 作为 HTTP 服务软件,具有更好的稳定性和高效性,被越来越多的大中小网站所使用。

Nginx 常用来提供静态或动态 HTTP 服务、反向代理服务、负载均衡、Web 缓存等用途。

 

1. 静态 HTTP 服务器

Nginx 首先是一个高性能的 HTTP 服务器,可以将服务器上的静态文件(如 HTML、图片 等静态内容),通过 HTTP 协议展现给客户端。Nginx支持更多的并发连接和更快的响应速度,尤其是在静态小文件业务环境中,能够支持高达几万到百万的并发连接;在系统资源占用方面,Nginx 比 Apache 消耗得更少。

 

2. 反向代理

HTTP 代理和反向代理服务是 Nginx 服务器作为 Web 服务器的主要功能之一,尤其是反向代理服务,是应用十分广泛的功能。

在提供反向代理服务方面, Nginx 服务器转发前端请求性能稳定,并且后端转发与业务配置相互分离,配置相当灵活。在后面的章节我们可以看到,在进行 Nginx 服务器配置时,配置后端转发请求完全不用关心网络环境如何,可以指定任意的 IP 地址和端口号,或其他类型的链接、请求等。

Nginx 服务器的反向代理服务功能并不只有这些,它提供的配套功能相当丰富。

  • 支持判断表达式。
    通过使用正则表达式进行相关配置,可以实现根据不同的表达式,采取不同的转发策略。
  • 支持对后端健康监测。
    它对后端返回情况进行了异常判断,如果返回结果不正常,则重新请求另一台主机(即将前端请求转向另一后端 IP) ,并自动剔除返回异常的主机。
  • 支持错误页面跳转功能。
    •  

      3. 负载均衡

      负载均衡负载均衡,一般包含两方面的含义:

      第一个方面的含义是,将单一的重负载分担到多个网络节点上做并行处理,每个节点处理结束后将结果汇总返回给用户,这样可以大幅提高网络系统的处理能力;

      第二个方面的含义是,将大量的前端并发访问或数据流量分担到多个后端网络节点上分别处理,这样可以有效减少前端用户等待响应的时间。Web 服务器、 FTP 服务器、企业关键应用服务器等网络应用方面谈到的负载均衡问题,基本隶属于后一方面的含义。因此, Nginx 服务器的负载均衡主要是对大量前端访问和流量进行分流,以保证前端用户访问效率。可以说,在绝大多数的 Nginx 应用中,都会或多或少涉及它的负载均衡服务。

      Nginx 服务器的负载均衡策略可以划分为两大类:即内置策略和扩展策略。

    • 内置策略主要包含轮询、加权轮询和 IP hash三种;
    • 扩展策略主要通过第三方模块实现,种类比较丰富,常见的有 url hash 、fair等。在默认情况下,内置策略会被编译进 Nginx 内核,使用时只需要在 Nginx 服务器配置中设置相关参数即可,扩展策略不会编译进 Nginx 内核,需要手动将第二方模块编译到 Nginx 内核。
    • 下面简单介绍一下几种负载均衡策略的实现原理。轮询策略比较简单,就是将每个前端请求按顺序(时间顺序或者排列次序)逐一分配至不同的后端节点上,对于出现问题的后端节点自动排除。加权轮询策略,顾名思义,就是在基本的轮询策略上考虑各后端节点接受请求的权重,指定各后端节点被轮询到的几率。加权轮询策略主要用于后端节点性能不均的情况根据后端节点性能的实际情况,我们可以在 Nginx 服务器的配置文件中调整权值,使得整个网络对前端请求达到最佳的响应能力。

       

      4. Web 缓存

      Squid 在 Web 服务器领域中是一款相当流行的开源代理服务器和 Web 缓存服务器。作为网页服务器的前置缓存服务器,在很多优秀的站点中,它被用以缓存前端请求,从而提高 Web 服务器的性能;而且,它还可以缓存万维网、域名系统或者其他网络搜索等。 Nginx 服务器也支持了和 Squid 类似的缓存功能。 Nginx 服务器的 Web 缓存服务主要由 Proxy_Cache 相关指令集和 FastCGI_Cache 相关指令集构成。

      其中 Proxy_Cache 主要用于在 Nginx 提供反向代理服务时,对后端源服务器的返回内容进行 URL 缓存;FastCGI Cache 主要对于 FastCGI 的动态程序进行缓存。 Nginx 服务器可以同时作为负载均衡服务器 和 Web 缓存服务器来使用,基本可以取代 Squid。

      Nginx("engine x")是一款高性能、轻量级的 HTTP 和反向代理 Web 服务器,以运行的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。Nginx 服务器的安装和配置非常简单,一般通过操作系统的软件包管理器就可以自动化安装。比如:Linux 的 yum、rpm,MacOS 的 brew 等。