nginx如何成为全球头号web服务器

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,国内使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。在连接高并发的情况下,Nginx是Apache服务不错的替代品,能够支持高达 50,000 个并发连接数的响应。

目前,根据W3Techs机构的统计数据显示,排名前三的Web服务器系统分别是Nginx(34.1%)、Apache(33.2%)和Cloudflare Server(18.7%)。排名第三的Cloudflare Server在这里值得关注,它来源Nginx。

Nginx以最快的Web服务器系统而声名鹊起,并且事实证明,可灵活扩展的底层架构非常适合除提供网站内容之外的众多Web任务。因为Nginx可以处理大量连接,通常用作反向代理和负载均衡系统,以管理进入网站的流量,并将这些流量分发到速度较慢的各服务器,从传统数据库服务器到微服务。

在web架构中的作用,nginx在web架构中最重要的有三个主要作用

HTTP服务器,反向代理负载均衡web缓存

1、Http代理+反向代理:作为web服务器最常用的功能之一,尤其是反向代理。对正向代理与反响代理架构解析如下图,具体细节,大家可以翻阅下资料。

Nginx做反向代理,提供性能稳定,并且能够提供配置灵活的转发能力。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的ok的话,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转处理、异常判断等。如果被分发的服务器存在异常和损毁,它能够将请求重新转发给另外一台服务器,然后自动去除异常服务器,实现容错抗毁。

2、服务器负载均衡

Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询、加权轮询、IP hash。扩展策略,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给它找出来做下算法实现。如下图,理解三种负载均衡算法的实现

IP hash算法,对客户端请求的IP进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,能够完全解决session不共享的问题。

3、web缓存

Nginx能够根据不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,重点用于对FastCGI的动态程序进行缓存处理。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。

最近几年 Nginx 已成为国内使用最广泛的 Web 服务器,无论创业公司还是成熟大公司都在用,任何有性能需求的场合总能看到它的身影。在 OpenResty 等第三方模块群的发展下,Nginx 进一步向应用防火墙、CDN 等领域扩展,甚至渗透到 LVS 领域与 F5 这样的硬件产品竞争。

从技术上来说,Nginx 是见过的扩展性、模块化、异步写得最漂亮的软件,可以在百万、千万级并发连接下,实现高吞吐量 Web 服务。而且,牛逼的软件架构使得 Nginx 无需重构,其生态圈内的第三方模块是长期有效的,让我们不用重复造轮子,可以“站在巨人的肩膀上”。

如果想让产品支持高并发请求的同时,保持高效服务,Nginx 就是非常正确的选择。掌握了它,就等于手握应对高并发以及海量数据处理的大宝剑。