常见的Web服务器产品
目前市场上比较流行的Web服务器主要有Apache、Microsoft IIS、Sun、Nginx、Tomcat、Lighttpd等。
由上图可以看出Nginx的市场占有率越来越高。但是在介绍本篇文章的主角——Nginx之前,我们还是有必要来简单了解下其他几个产品。
Apache服务器(httpd)
Apache服务器是Apache软件基金会下面的一款Web服务器,平时我们将这个服务器称为httpd。这款服务器和其他Web服务器比起来特性最全,并且运行速度快,性能相对稳定,而且扩展功能丰富。
Apache Web服务器是当今Web服务器市场中的领军产品,但在具体的使用过程中,它仍然在某些方面表现不足——比如性能方面。
IIS
IIS,是Internet InformationServices的缩写。IIS不仅仅是一款Web服务器,同时还包含了Gopher Server(Web上一种信息查找系统)和FTP Server,并且可以用于HTTP Server、FTP Server、NNTP Server或者SMTP Server。我们通过IIS不仅仅可以发布网页,它还可以提供新闻服务、文件和应用程序服务、邮件服务等。
IIS的功能非常强大,但是缺点也显而易见——IIS和Window平台强绑定。
Tomcat服务器
Tomcat也是Apache软件基金会下面的一款产品。其实Tomcat的“本职工作”是一个Servlet容器,只是附带了Web服务器的功能。因此Tomcat在处理静态HTML页面方面的能力不如Apache这些职业选手。
但是这并不影响他们成为“好基友”。在前后端分离的开发模式中经常使用Apache来处理静态页面,用Tomcat来配合处理动态请求。
Lighttpd服务器
Lighttpd服务器来自德国的一个开源轻量级Web服务器软件,它在2004年左右开始取得了高速发展。
Lighttpd的急速发展得益于它专门针对高性能网站,提供了一套安全、快速、兼容性良好并且灵活的Web Server环境。同时,它具有非常低的内存开销、CPU占用率低以及模块丰富等特点,支持FastCGI、Output Compress(输出压缩)、URL重写等绝大多数Apache具有的重要功能,是Apache的绝好替代者。
作为轻量级服务器,Lighttpd与Apache等大型Web服务器软件相比,其在功能上存在不足和部分缺陷,比如Proxy功能不完善、对编码支持不完善等缺点。
Nignx是什么
Nginx是一款免费开源的高性能HTTP服务器及反向代理服务器(ReverseProxy)产品,同时,它还可以提供IMAP/POP3代理服务等功能。在实际的使用中,Nginx还可以提供更多更丰富的功能,我们将在下一节介绍它的功能。
Nginx的官方网站为http://www.nginx.org
Nginx不断成长和发展,以其稳定的性能、丰富的功能集、低系统资源的消耗而逐渐被全球Web服务器使用者认可。
Nignx主要功能
Nginx服务器以其功能丰富著称于世。它既可以作为HTTP服务器,也可以作为反向代理服务器或者邮件服务器;能够快速响应静态页面(HTML)的请求;支持FastCGI、SSL、Virtual Host、URL Rewrite、HTTP Basic Auth、Gzip等大量使用功能;并且支持更多的第三方功能模块的扩展。
可以将Nginx的功能分为三个部分:基本HTTP服务、高级HTTP服务和邮件服务等三大类。
1. 基础的Http服务
在Nginx提供的基本HTTP服务中,主要包含以下功能特性:
- 处理静态文件(如HTML静态网页及请求);处理索引文件以及支持自动索引。(常用功能)
- 打开并自行管理文件描述符缓存。
- 提供反向代理服务,并且可以使用缓存加速反向代理,同时完成简单负载均衡及容错。(常用功能)
- 提供远程FastCGI服务的缓存机制,加速访问,同时完成简单的负载均衡以及容错。
- 使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI以及图像缩放等。其中,针对包含多个SSI的页面,经由FastCGI或反向代理,SSI过滤器可以并行处理。
- 支持HTTP下的安全套接层安全协议SSL。
2. 高级的Http服务
在Nginx提供的高级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语言。
3. 邮件代理服务
Nginx提供邮件代理服务也是其基本开发需求之一,主要包含以下功能特性:
- 支持使用外部HTTP认证服务器重定向用户到IMAP/POP3后端,并支持IMAP认证方式(LOGIN、AUTH LOGIN/PLAIN/CRAM-MD5)和POP3认证方式(USER/PASS、APOP、AUTH LOGIN/PLAIN/CRAM-MD5)。
- 支持使用外部HTTP认证服务器认证用户后重定向连接到内部SMTP后端,并支持SMTP认证方式(AUTH LOGIN/PLAIN/CRAM-MD5)。
- 支持邮件代理服务下的安全套接层安全协议SSL。
- 支持纯文本通信协议的扩展协议STARTTLS。