什么是Nginx

Nginx(发音同 engine x)原来以前一直读错了。。

它是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler使用。 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。目前中国大陆使用nginx网站用户有:百度、新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。


与其他服务器比较

首先Nginx是一款服务器软件,说到服务器软件脑子里蹦出来的肯定是经常用的IIS,Tomcat,JBoss,Apache等等web服务器。这些服务器的主要功能都是运行咱们编写的web程序。而Nginx不同,它不仅能作为web服务器发布程序,还能作为反向代理服务器,实现负载均衡功能;还可以作为电子邮件代理服务器实现收发邮件的功能。并且Nginx能支持处理百万级的TCP连接,10万以上的并发连接,并且是一个很好的跨平台服务器。

Nginx进程模型

nginx在启动后,会有一个master进程和多个worker进程。master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。而基本的网络事件,则是放在worker进程中来处理了。

Nginx的master/worker工作机制类似于Jenkins的主从节点,主节点负责管理子节点,给子节点发送命令,显示构建信息;子节点负责做具体的构建任务。用户只需要和Jenkins主节点进行通信即可,Nginx也是这样用户只需要和master进行通信即可。

Nginx的多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。

另外worker进程的个数是可以设置的,一般设置为和服务器cup核数相等,或者是核数的两倍。

nginx的进程模型,可以由下图来表示:



nginx stream 做集群_linux




说了这么多,最主要的是要知道Nginx能够帮助咱们解决什么问题:负载均衡,动静分离,邮件代理等,后续会讲解Nginx如何实现的负载均衡和动静分离机制。