Nginx到底是什么?为何出现争议?

近日,俄罗斯的两位开发者突然被捕,其中一人是风靡全球的网页服务器 Nginx 之父 Igor Sysoev。警方给出的理由是二人涉嫌项目侵权。这个项目指的是网页服务器Nginx,是 Igor Sysoev 15 年前在老东家任职期间利用业余时间开发的。

那么,Nginx究竟是什么?

Nginx 是一款轻量级的 Web 服务器/反向代服务器及电子邮件代理服务器,在 BSD-like 协议下发行,有着占有内存少和并发能力强的特点,第一个公开版本 0.1.0 发布于 2004 年 10 月4 日。国内很多企业都会 nginx 网站,包括百度、京东 、新浪、网易、腾讯、淘宝等这些Top 级公司。

2019 年 2 月,NGINX 最终取代 Apache HTTPD,成为互联网上部署最广泛的服务器。据Netcraft 在 2019 年 12 月的 Web 服务器调查显示,NGINX 的市场份额高达 38%。

目前,Nginx 已经成为风靡全球的服务器,BAT、Facebook都将其作为企业 IT 架构的一部分。

由于Nginx的根源在于大规模的性能优化,因此在基准测试中,Nginx的性能通常会优于其他流行的Web服务器,尤其是在静态内容和/或并发请求很高的情况下,这就是通常使用Nginx为其托管提供动力的原因。

Nginx如何工作?

Nginx的目的提供低内存使用率和高并发性。Nginx不会为每个Web请求创建新的流程,而是使用异步事件驱动的方法,在单个线程中处理请求。

使用Nginx,一个主进程可以控制多个工作进程。主进程维护工作进程的过程,而工作进程则进行实际的操作。由于Nginx是异步的,因此每个请求都可以由工作进程并发执行,而不会阻止其他请求。

Nginx中常见的一些功能包括:

01正向代理

正向代理:内网服务器主动去请求外网的服务的一种行为。

正向代理其实就是说客户端无法主动或者不打算完成主动去向某服务器发起请求,而是委托了nginx代理服务器去向服务器发起请求,并且获得处理结果,返回给客户端。

02反向代理

反向代理:reverse proxy,是指用代理服务器来接受客户端发来的请求,然后将请求转发给内网中的上游服务器,上游服务器处理完之后,把结果通过nginx返回给客户端。

反向代理是对于来自外界的请求,先通过nginx统一接受,然后按需转发给内网中的服务器,并且把处理请求返回给外界客户端,此时代理服务器对外表现的就是一个web服务器,客户端根本不知道“上游服务器”的存在。

03负载均衡

将服务器接收到的请求按照规则分发的过程,称为负载均衡。负载均衡是反向代理的一种体现。

04静态服务器

现在很多项目常用前端服务器和后端服务器分离,分别部署,这样的方式能让前后端人员能各司其职,不需要互相依赖,而前后分离中,前端项目的运行是不需要用Tomcat、Apache等服务器环境的,因此可以直接用nginx来作为静态服务器。

静态服务器的配置如下,其中关键配置为:

root:直接静态项目的绝对路径的根目录。

server_name : 静态网站访问的域名地址。