Nginx服务器是轻量级Web服务器中广受好评的一款产品。
1.1 Nginx的历史
1.2 常见服务器产品介绍
1.2.1 Apache服务器
Apache Web服务器在各种开源的WWW服务提供工具中特性最全,并且运行速度快,性能相对稳定,而且扩展功能丰富。
但是在性能方面表现不足,因为以“进程”为基础的结构。
1.2.2 Microsoft IIS
收费软件。
1.2.3 Tomcat服务器
Tomcat是sun公司官方推荐的Servlet和JSP容器,免费开源,且体积小,安装和部署都很方便,系统资源占用率低。
作为轻量级的服务器软件,无法满足复杂业务场景需求,也没有复杂和丰富的功能。
1.2.4 Lighttpd服务器
lighttpd服务器开源轻量级Web服务器软件,是Apache的绝好替代者。
存在不足和部分缺陷。
1.2.5 Nginx诞生记
1.2.6 版本变更大事记
1.3 Nginx的功能特性
基本功能归类:
1:Nginx提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服务器, 支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等。
2:Nignx提供高级HTTP服务,可以进行自定义配置,支持虚拟主机,支持URL重定向,支持网络监控,支持流媒体传输等。
3:Nginx作为邮件代理服务器是最早开发这个产品的目的之一,他支持IMAP/POP3代理服务功能,支持内部SMTP代理服务功能。
1.3.1 基本HTTP服务
* 处理静态文件(如HTML静态网页及请求);处理索引文件以及支持自动索引
* 打开并自行管理文件描述符缓存
* 提供反向代理服务,并且可以使用缓存加速反向代理,同时完成简单负载均衡及容错
* 提供远程FastCGI服务的缓存机制,加速访问,同时完成简单的负载均衡以及容错
* 使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI以及图像缩放等。其中,针对包含多个SSI的页面,经由FastCGI或反向代理,SSI过滤器可以并行处理。
* 支持HTTP下的安全套接层安全协议SSL
1.3.2 高级HTTP服务
* 支持基于名字和IP的虚拟主机设置
* 支持HTTP/1.0中的KEEP-Alive模式和管线(PipeLined)模型连接。
* 支持重新加载配置以及在线升级时,无须中断正在处理的请求
* 自定义访问日志格式、带缓存的日志写操作以及快速日志轮转
* 提供3xx~5xx错误代码重定向功能
* 支持重写(Rewrite)模块扩展
* 支持HTTP DAV模块,从而为Http WebDAV提供PUT、DELETE、MKCOL、COPY以及MOVE方法
* 支持FLV流和MP4流传输
* 支持网络监控,包括基于客户端IP地址和HTTP基本认真机制的访问控制、速度限制、来自同一地址的同时连接数或请求数限制等
* 支持嵌入Perl语言
1.3.3 邮件代理服务
* 支持使用外部HTTP认证服务器重定向用户到IMAP/POP3后端,并支持IMAP和POP3认证方式
* 支持使用外部HTTP认证服务器认证用户后重定向连接到内部SMTP后端,并支持SMTP认证方式
* 支持邮件代理服务器下的安全套接层安全协议SSL。
* 支持纯文本通信协议的扩展协议STARTTLS
1.4 常用功能介绍
1.4.1HTTP代理和反向代理
在提供反向代理服务方面,Nginx服务器转发前端请求性能稳定,并且后端转发与业务配置相互分离,配置相当灵活。支持判断表达式;对后端返回情况进行了异常判断,如果返回结果不正确,则重新请求另一台主机,并自动剔除返回异常的主机;它还支持错误页面跳转功能。
1.4.2 负载均衡
负载均衡:
1:将单一的重负载分担到多个网络节点上做并行处理,每个节点处理结束后将结果汇总返回给用户,这样开源大幅提高网络系统的处理能力。
2:将大量的前端并发访问或数据流量分担到多个后端网络节点上分别处理。
负载均衡策略:内置策略和扩展策略。
内置策略:轮询、加权轮询和IP hash三种
扩展策略:通过第三方模块实现,有url hash,fair等。
轮询策略:将每个前端请求按顺序(时间顺序或者排列次序)逐一分配到不同的后端节点上,对于出现问题的后端节点自动排除。
加权轮询策略:在基本的轮询策略上考虑各后端节点接受请求的权重,指定各后端节点被轮询到的几率。
IP hash策略:是将前端的访问IP进行hash操作,然后根据hash结果将请求分配给不同的后端节点。避免考虑前端用户的session在后端多个节点上共享的问题。
url hash策略:对前端请求的url进行了hash操作,如果后端有缓存服务器,它能够提高缓存效率,同时也解决了session的问题。
fair策略:将前端请求转发到一个最近负载最小的后台节点。通过后端节点对请求的响应时间来判断负载情况,响应时间短的节点负载相对就轻。
1.4.3 Web缓存
Squid在Web服务器领域中是一款相当流行的开源代理服务器和Web缓存服务器。Nginx可以取代。
Nginx服务器的Web缓存服务构成:
* Proxy_Cache 主要用于在Nginx服务器提供反向代理服务时,对后端服务器的返回内容进行URL缓存;
* FastCGI_Cache主要用于对FastCGI的动态程序进行缓存;
* 第三方模块ngx_cache_purge主要用于清除Nginx服务器上指定的URL缓存
1.5 本章小结
反向代理、负载均衡、Web缓存服务。