一天入门Nginx系列之----开门介绍篇
前言
大家好,这里是浩道linux,主要给大家分享linux、python、网络通信相关的IT知识平台。
本文是Nginx序列的开门篇,当然得从Nginx的诞生背景、现实功能、应用场景说起。
Nginx介绍
一、背景介绍
Nginx (engine x) 是一个高性能的HTTP和反向代理的web服务器,同时也提供了POP3/SMTP/IMAP。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。
Nginx是一款轻量级的Web 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
二、Nginx相关概念介绍
1、WEB服务器
WEB服务器也叫网页服务器,英文名叫Web Server,主要功能是为用户提供网上信息浏览服务。
2、HTTP
HTTP是超文本传输协议的英文缩写,是用于从WEB服务器传输超文本到本地浏览器的传输协议,也是互联网上应用最为广泛的一种网络协议。HTTP是一个客户端和服务器端请求和应答的标准,客户端是终端用户,服务端是网站,通过使用Web浏览器、网络爬虫或者其他工具,客户端发起一个到服务器上指定端口的HTTP请求。
3、POP3/SMTP/IMAP服务
POP3(Post Offic Protocol 3)邮局协议的第三个版本;
SMTP(Simple Mail Transfer Protocol)简单邮件传输协议;
IMAP(Internet Mail Access Protocol)交互式邮件存取协议;
通过以上协议,不难看出,Nginx也可以作为电子邮件代理服务器。
4、反向代理
与反向代理相对立的是正向代理,所以很有必要先搞清楚什么是正向代理,这样才能更好去理解反向代理。
(1)正向代理
我们把一个局域网以外的互联网想象成一个巨大的资源库,此时如果局域网中的客户端要访问互联网,则需要通过代理服务器去访问,这种代理服务就称为正向代理。
如当前国内用户需要访问谷歌网站,此时就需要在客户端浏览器中设置代理服务器后,通过该代理服务器才能进行谷歌网站的访问。如下拓扑所示:
1)如拓扑所示,局域网内的用户是作为客户端的代表,如果需要访问局域网外的外部服务器,往往客户端是不能直接访问到的,此时就需要借助一台可以访问外部服务器的服务器进行访问,即要借助图中的代理服务器进行访问。
正常访问流程是:客户端把请求发给代理服务器,由代理服务器将客户端请求转发给外部服务器,外部服务器处理客户端请求后将数据转发给代理服务器,再由代理服务器转发给客户端。
(2)反向代理
在反向代理中,我们同样以一个拓扑展开,如下图所示:
1)如拓扑所示,用户作为客户端,此时对于代理服务器以及真实服务器来说就是外部网络了。客户端对于代理服务器是没有感知的,因为此时客户端不需要任何配置就可以访问所需要访问的资源。
而nginx就常用做这样的代理服务器,称为反向代理服务器。
5、负载均衡
我们知道客户端访问服务器资源的大概流程是:客户端发送多个请求到服务器,服务器收到请求后,进行处理相关请求,有一些请求可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。
但是我们应该能够想得到,随着业务飞涨,服务器访问量增多、并发量大的时候,就很容易造成服务器由于压力过大,处理不过来,导致服务器崩溃。
而如果解决服务器资源紧张的问题,第一个能够想到的无非就是加大服务器的硬件配置,如加大CPU、内存等配置。但是这种方法会造成金钱消耗过大不说,也会随着业务量会不断扩大硬件配置,有这诸多限制。
有没有其它方法应对这种情况呢?此时集群的解决方案出来了,单个服务器没有办法处理这么多请求,就增加服务器数量进行处理,即通过将客户端请求转发到多台服务器上进行处理。相对于将客户端请求转发到单台服务器进行处理,这种方法是将客户端请求改为转发到多台服务器上,也就是将负载分发到了不同的服务器,起到了缓解服务器资源的作用,被称为负载均衡。
6、动静分离
为加快网站的解析速度,可以把动态页面和静态页面由不同的服务器进行解析,这样就加快了解析速度,同样可以降低原来单个服务器的压力。这种把动态资源和静态资源分开部署的方式就称为动静分离。
7、高可用
Nginx优点
大家可以自行去了解对比当前比较主流的WEB服务器,如Apache、Microsoft-IIS、google Servers、Nginx、Tomcat等等,就会得出Nginx具有不可替代的优势。以下是它比较突出的几个优点:
1、速度更快、并发更高
Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率 。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。
单次请求或者高并发请求的环境下,Nginx都会比其他Web服务器响应的速度更快。一方面在正常情况下,单次请求会得到更快的响应,另一方面,在高峰期(如有数以万计的并发请求),Nginx比其他Web服务器更快的响应请求。Nginx之所以有这么高的并发处理能力和这么好的性能原因在于Nginx采用了多进程和I/O多路复用(epoll)的底层实现。
2、配置简单,扩展性强
Nginx的设计极具扩展性,它本身就是由很多模块组成,这些模块的使用可以通过配置文件的配置来添加。这些模块有官方提供的也有第三方提供的模块,如果需要完全可以开发服务自己业务特性的定制模块。
3、高可靠性
Nginx采用的是多进程模式运行,其中有一个master主进程和N多个worker进程,worker进程的数量我们可以手动设置,每个worker进程之间都是相互独立提供服务,并且master主进程可以在某一个worker进程出错时,快速去"拉起"新的worker进程提供服务。
4、支持热部署
当前互联网项目都要求以7*24小时进行服务的提供,针对于这一要求,Nginx也提供了热部署功能,即可以在Nginx不停止的情况下,对Nginx进行文件升级、更新配置和更换日志文件等功能。
5、成本低、BSD许可证
BSD是一个开源的许可证,世界上的开源许可证有很多,现在比较流行的有六种分别是GPL、BSD、MIT、Mozilla、Apache、LGPL。
Nginx本身是开源的,我们不仅可以免费的将Nginx应用在商业领域,而且还可以在项目中直接修改Nginx的源码来定制自己的特殊要求。这些点也都是Nginx为什么能吸引无数开发者继续为Nginx来贡献自己的智慧和青春。OpenRestry [Nginx+Lua] Tengine[淘宝]。
Nginx功能特性及常用功能
Nginx提供的基本功能服务从大体上归纳为:基本HTTP服务、高级HTTP服务、邮件服务等三大类。
一、Nginx功能特性:
1、基于HTTP服务的功能特性:
Nginx可以提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等。
(1)处理静态文件、处理索引文件以及支持自动索引;
(2)提供反向代理服务器,并可以使用缓存加上反向代理,同时完成负载均衡和容错;
(3)提供对FastCGI、memcached等服务的缓存机制,,同时完成负载均衡和容错;
(4)使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI以及图像缩放等。其中针对包含多个SSI的页面,经由FastCGI或反向代理,SSI过滤器可以并行处理;
(5)支持HTTP下的安全套接层安全协议SSL.;
(6)支持基于加权和依赖的优先权的HTTP/2;
2、基于高级HTTP服务的功能特性:
(1)支持基于名字和IP的虚拟主机设置;
(2)支持HTTP/1.0中的KEEP-Alive模式和管线(PipeLined)模型连接;
(3)自定义访问日志格式、带缓存的日志写操作以及快速日志轮转;
(4)提供3xx~5xx错误代码重定向功能;
(5)支持重写(Rewrite)模块扩展;
(6)支持重新加载配置以及在线升级时无需中断正在处理的请求;
(7)支持网络监控;
(8)支持FLV和MP4流媒体传输;
3、基于邮件服务的功能特性:
Nginx提供邮件代理服务也是其基本开发需求之一,主要包含以下特性:
(1)支持IMPA/POP3代理服务功能;
(2)支持内部SMTP代理服务功能;
二、Nginx常用功能:
1、静态资源部署
2、反向代理
3、负载均衡
4、高可用
5、WEB缓存
结语
本文主要从nginx诞生背景说起,让大家真正了解为什么需要nginx,只有了解了其应用场景之后,我们才能更好的去学习如何使用它。
更多精彩
浩道linux,专注于linux系统的相关知识、网络通信、python相关知识以及涵盖IT行业相关技能的学习,适合零基础的有兴趣的人员入门,同时会一步步更深入学习,真正让你在学习工作中真正去用到所学。同时也会分享一些面试经验,助你找到高薪offer,让我们一起去学习,一起去进步,一起去涨薪!期待您的加入~~~关注回复“资料”可免费获取学习资料(含有电子书籍、视频等)。
喜欢的话,记得点“赞”和“在看”哦