1.常见服务器产品介绍:
Apache服务器(开源免费):
优点:跨平台能力强,安全性能高,运行速度快,性能相对稳定。
缺点:Apache在设计时使用以“进程”为基础架构,进程比线程消耗更多的系统开支,这导致Apache在多处理环境中性能有所下降。因此,在对一个Apache Web站点进行扩容时,通常是增加服务器或扩充集群节点而不是增加处理器;
Microsoft IIS服务器(付费产品):
优点:IIS和windows server 组合,可以提供可靠高效的完整的服务器解决方案。
缺点:作为付费软件,部署成本高;
Tomcat服务器(开源免费)
优点:Servlet和JSP容器,作为轻量级应用服务器,在中小型系统和并发用户不是很多的情况下变现突出;体积小,安装和部署方便;
缺点:无法满足复杂业务场景需求,可以处理静态html,但能力不如Apache服务器;
Lighttpd服务器(开源轻量级):
优点:专门针对高性能网站,提供了一套安全、快速、兼容性良好且灵活的Web Server环境,且内存开销低,CPU占用率低。
缺点:与Apache等大型Web服务器软件相比,在在功能上存在不足和缺陷;
2.Nginx诞生:
Nginx的诞生是为了解决俄罗斯访问量最大的Rambler.ru站点而开发的,是一款免费开源的高性能HTTP服务器及反向代理服务器,同事还提供了IMAP/POP3代理服务(POP3是收邮件的协议,SMTP是发邮件的协议,IMAP是一种邮箱通信协议。);
3.Nginx的功能特性:
Nginx提供的基本服务功能大致可以分为三大类:
1)Nginx提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等;
eg:处理静态文件(如html静态网页及请求);处理索引文件以及支持自动索引;
打开并自行管理文件描述符缓存
提供反向代理,并且可以使用缓存加速反向代理,同时完成简单负载均衡及容错;
提供远程FastCGI服务的缓存机制,加速访问,同时完成简单的负载均衡及容错;
使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI以及图像缩放等功能;
支持HTTP下的安全套接层安全协议SSL
注:
2)Nginx提供高级HTTP服务,可以进行自定义配置,支持虚拟机,支持URL重定向,支持网络监控,支持流媒体传输等。
支持基于名字和IP的虚拟主机设置。
支持HTTP/1.0中的KEEP-Alive模式和管线模型连接
支持重新加载配置以及在线升级时,无须中断正在处理的请求
自定义访问日志格式、带缓存的日志写操作以及快速日志转轮。
提供3xx-5xx错误代码重定向功能。
支持重写(Rewrite)模块拓展。
支持HTTP DAVM模块,从而为Http WebDAV提供PUT、DELETE、MKCOL 、COPY以及MOVE方法
支持FLV流和MP4流传输
支持网络监控,包括基于客户端IP地址和HTTP基本认证机制的访问控制、速度限制、来自同一地址的同时连接数或请求数限制等;
支持嵌入Perl语言
3)Nginx作为邮件代理服务器最早开发这个产品的目的之一,支持IMAP/POP3代理服务功能,支持内部SMTP代理服务功能;
支持使用外部Http认证服务器重定向用户到IMAP/POP3后端,并支持IMAP认证方式IMAP和POP3认证方式。
支持使用外部HTTP认证服务器认证用户重定向连接到内部SMTP后端,并支持SMTP认证方式;
支持邮件代理下的安全套接层安全协议SSL;
支持纯文本通信协议的扩展协议STARTTLS;
4.常用功能介绍:
1)HTTP代理和反向代理
Nginx服务器转发前端请求性能稳定,并且后端转发与业务配置相互分离,配置相当灵活。
2)负载均衡
一般包含两个含义:
1)将单一的重负载分担到多个网络节点上做并行处理,每个节点处理结束后将结果汇总返回给用户,这样做可以大幅度提高网络系统的处理能力。
2)将大量的前端并发访问或数据流量分担到多个后端网络节点上分别处理,这样可以有效地减少前端的等待时间;WEB服务器、FTP服务器、企业关键应用服务器一般说的负载均衡主要是针对大量的前端访问和流量进行分流;
Nginx负载均衡的策略可以划分为两大类:即内置策略和扩展策略;内置策略主要包括轮询、加权轮询、和IP hash三种。扩展策略主要通过第三方模块实现,常用的有url hash、fair等;
轮询策略:将每个前端请求按顺序(时间顺序或者排列次序)逐一分配到不同的后端节点上,对于出现问题的后端节点自动排除。
加权轮询:在基本的轮询策略上,指定后端各个节点被轮询到的几率。加权轮询策略主要用于后端节点性能不均的情况;
IPhash 策略:是将前端的访问IP进行hash操作,根据hash结果将请求分配给不同的后端节点。每个前端访问IP会固定访问一个后端节点。这样做的好处是避免前端用户的session在后端多个节点上共享的问题;
扩展策略中的url hash与IP hash相近,不同之处在于url hash是对前端请求的url进行了hash操作;url hash策略的优点在于,如果后端有缓存服务器,能够提高缓存效率,同时也解决了session问题;缺点是 如果后端节点出现异常,不能自动排除该节点。如果后端节点出现异常,经常导致nginx返回503错误;
拓展中的第三方模块fair则是将前端请求转发到一个最近负载最小的后台节点,Nginx通过对后端节点的响应时间来判断负载情况;响应时间短的,节点负载相对就轻;
3)web缓存:
web缓存服务器,作为网页服务的前置缓存服务器,在很多优秀的站点中,被用于缓存前端请求,从而提高web服务器的性能;
Nginx服务器的web缓存服务主要由Proxy_Cache相关指令集和FastCGI_Cache相关指令集结构。
Proxy_Cache主要用于在Nginx服务器提供反向代理服务时,对后端源服务器的返回内容进行URL缓存;
FastCGI_Cache主要用于对FastCGI的动态程序进行缓存。
还有一款常用的第三方模块ngx_cache_purge也是Nginx服务器Web缓存功能中经常用到的。主要用于清除Nginx服务器上指定的URL缓存;