Nginx,从基本原理到开发实践
前言
Nginx是什么?
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx作为一个高性能的HTTP和反向代理web服务器,包括三个主要功能:静态服务器(作为Web服务器)、虚拟主机(作为邮件代理服务器)、反向代理(作为负载均衡服务器)。本文以Nginx服务器的三个功能为主线,分为四个部分,分别是:全文第二部分介绍“Nginx三大功能——HTTP服务器”、全文第三部分介绍“Nginx三大功能——虚拟主机”、全文第四部分介绍“Nginx三大功能——负载均衡(反向代理+weight权重)”、全文第五部分介绍“实践——Nginx安装使用”。
Nginx三个功能的区别
(1)HTTP服务器(静态资源服务器/图片服务器)
Nginx作为HTTP服务器:是指在web项目开发时,总是将项目部署在tomcat jetty等应用服务器上,而服务端所需要的资源,文本数据和静态资源路径自然存放在数据库中,而静态资源实体(如图片、音视频等)既不能放在数据库中,又不能放在应用服务器的相关目录下,这个时候我们需要一种用来存放项目所需静态资源的服务器(只要在数据库的字段中存储好静态资源的路径即可),这就是http服务器——Nginx。
附:为什么称为图片服务器,因为是最常用的静态资源服务器就是图片(虽然Nginx上存放的不一定是图片)。
(2)反向代理/负载均衡
Nginx反向代理:Nginx作为服务端代理,代表实际应用服务器与客户端交流,将网络请求分发给后台实际服务器。
Nginx负载均衡:Nginx作为服务端代理,根据weight权重将网络请求分发给后台实际服务器。
负载均衡和反向代理的关系:负载均衡是通过反向代理来实现的,负载均衡=反向代理+weight权重
(3)虚拟主机
Nginx虚拟主机:Nginx部署在一个物理服务器上,却通过ip、端口、域名对外实现多个访问入口,让客户端以为是多个服务器,这就是虚拟主机(具体是如何实现虚拟的,下文提供解释)。
虚拟主机和负载均衡的区别又是什么?
Nginx做虚拟主机,将一个服务器当做多个服务器用,通过文件目录来虚拟服务器(主机),虚拟主机指的是Nginx自己作为服务器存储文件;
Nginx做负载均衡,Nginx作为服务端代理服务器,将网络请求分发到具体的应用服务器(tomcat或jetty),根据不同的应用服务器(tomcat jetty)的性能,设置weight权重,Nginx本身不作为服务器存储文件。
小结:http服务器是指nginx自己存储图片等静态文件,虚拟主机是nginx提供多个入口来存储图片等静态文件,负载均衡是指nginx根据权重weight将网络请求分发给具体的应用服务器。