最流行的5大开源Web服务器

超过80%的web应用程序和网站都是使用的开源web服务器。在本文中,我们将介绍目前市场上最流行的5大开源web服务器,并简要回顾它们的历史,技术特性以及更多相关内容,方便你自己能够更加轻松的部署这些流行的web服务器。

根据维基百科介绍,web服务器是“通过HTTP协议处理web请求的计算机系统”(a computer system that processes requests via HTTP)。这个词可以指代整个系统,也可以指代可接收和管理HTTP请求的的程序。本文中介绍的web服务器指的是为终端用户处理web请求的程序。

NGINX服务器

Igor Sysoev从2002年开始开发NGINX,并在2004年发布了第一个公开版本。NGINX的开发是为了解决C10K(C10K是如何处理1万个并发连接的简写)问题,目前,全球有超过30%的网站在使用它。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

NGINX依靠异步事件驱动架构来帮助其处理大量的并发会话,由于其对资源的轻量利用和伸缩自如的特性,它成为了广受欢迎的web服务器。

NGINX在类BSD(Berkeley Software Distribution)许可协议的授权下发布的,它不仅可作为web服务器进行部署,也可作为代理服务器或负载平衡器。你可以在NGINX社区网站找到它的更多信息。

NGINX的特点:

服务器

Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。

处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。

无缓存的反向代理加速,简单的负载均衡和容错。

FastCGI,简单的负载均衡和容错。

模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。

支持 SSL 和 TLSSNI。

代码

Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函数库,并且除了zlib、PCRE和OpenSSL之外,标准模块只使用系统C库函数。而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库。

代理服务器

作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx 是一个安装非常的简单、配置文件非常简洁(还能够支持perl语法)、Bug非常少的服务器。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。

Lighttpd服务器

Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销、cpu占用率低、效能好以及丰富的模块等特点。

Lighttpd以其低内存占用,低CPU负载和处理速度的优化而独立于世,它使用事件驱动架构,对大量并行连接进行优化,支持FastCGI, SCGI, Auth,Output-compression, URL-rewriting等多种功能。Lighttpd主要用于Catalyst和Ruby on Rails的web框架。通过项目主页,你可以找到它的更多信息。

Apache

Apache HTTP Server 简称为 Apache。它诞生于1995年,并在2015年2月20日度过了其20岁的生日。全球超过52%的网站使用了Apache,它是目前最流行的web服务器

Apache,中文名:阿帕奇,是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。开发者 Apache软件基金会。Apache httpd通常运行在Linux上,也可以部署在OS X和Windows之上,它的发布得到Apache许可证 2.0 版的许可该web服务器自身使用模块化架构,加载其它额外的模块可以作为其额外特性。比如,加载mod_proxy模块可以增加服务器代理/ 网关的功能,加载mod_proxy_balancer模块可以为所有支持的协议提供负载平衡。在v2.4版本里,Apache可通过全新的mod_http2模块支持HTTP/2。

从1996年开始,Apache HTTP Server就已经是最为流行的web服务器了,这与它拥有伟大的文档和软件项目集成支持的特性是分不开的,你可以在Apache基金会的项目页面上找到它的更多信息。

Apache Tomcat

Apache只支持静态网页,但像php,cgi,jsp等动态网页就需要Tomcat来处理。Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTTP服务器,它也可以被视作一个单独的Web服务器。但是,不能将 Tomcat 和 Apache Web 服务器混淆,Apache Web Server 是一个用 C 语言实现的 HTTP web server;这两个 HTTP web server 不是捆绑在一起的。Apache Tomcat 包含了一个配置管理工具,也可以通过编辑 XML 格式的配置文件来进行配置。Apache,nginx,tomcat并称为网页服务三剑客,可见其应用度之广泛。

Apache Tomcat是在Apache许可证 2.0 版的授权下进行发布的,通常用于运行Java应用程序。此外,它能够通过Coyote的扩展,扮演为本地文件HTTP文档服务的普通服务器的角色。更多详细的信息可以查看Apache Tomcat项目网站。

另外,Apache Tomcat还经常内嵌在其它开源Java应用服务器中,如JBoss, Wildfly和Glassfish。

Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开销,不太适合于多处理器环境,因此,在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的Yahoo!、W3 Consortium、Financial Times等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、 Windows、Linux系统平台上)以及它的可移植性等方面。

Apache的诞生极富有戏剧性。当NCSA WWW服务器项目停顿后,那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的。就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache。如果你准备选择Web服务器,毫无疑问Apache是你的最佳选择。

Node.js

NNode.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。

V8引擎执行Javascript的速度非常快,性能非常好。 [1] Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

相比起其它流行的web服务器,Node.js的不同之处在于它是一个构建网络应用的跨平台运行环境,拥有可胜任异步I/0的事件驱动构架。这些设计选择能够优化应用程序的数据吞吐量和可伸缩性,支持实时通信和网页游戏。 Node.js 还强调了web开发堆栈上的差异,Node.js清楚地显示作为HTML、 CSS或者JavaScript堆栈的一部分,在这一点上与Apache或者NGINX同时作为多个不同软件堆栈的一部分的理念正好是相反的。

Node.js是在混合授权协议下发布的,更多信息可以查看该项目网站。

在几年的时间里,Node.JS逐渐发展成一个成熟的开发平台,吸引了许多开发者。有许多大型高流量网站都采用Node.JS进行开发,此外,开发人员还可以使用它来开发一些快速移动Web框架。

除了Web应用外,NodeJS也被应用在许多方面,NodeJS在其它方面所开发的十大令人神奇的项目,这些项目涉及到应用程序监控、媒体流、远程控制、桌面和移动应用等等。

小贴士

如果你正在寻找一个流行的web服务器,我强烈建议你下载 LAMP(Linux, Apache, MySQL, PHP)或者LNMP(Linux, NGINX, MySQL, PHP)配套堆栈。此外,还可以根据根据你自己的不同喜好,更换搭配多种这样的配套堆栈。这种配套堆栈通常都提供了一键安装支持或者Linux上的软件包管理器的安装支持。

原文发布于微信公众号 - 大魏分享(david-share)

原文发表时间:2018-08-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏進无尽的文章

基础篇-服务器工作实现的浅析

对于一个前端开发的人员来说,了解服务器的基础知识,个人觉得是非常必要的,于是就有一个这篇侧重于Java的服务器相关知识的文章,只是简单介绍对于我也是一个拓展。

15420
来自专栏架构师之路

100行代码,搞定http监控框架

集群信息管理,员工信息管理,告警策略管理,几篇前戏已经铺垫足够,今天,分享如何用100行代码搞定一个可扩展,通用的http监控框架。 一、常见的http监控玩法...

45560
来自专栏ImportSource

消息队列可以有的样子

铺垫 无论是什么类型的消息队列,恐怕都离不开三个东东:读取端 、消息存储平台、写入端,无论你给这三者起了什么样子的名字。也就是写入、存储、读取。 写入端通常被叫...

44960
来自专栏琯琯博客

awesome-sysadmin-cn资源

系统管理员 资源列表,内容包括:备份/克隆软件、云计算/云存储、协作软件、配置管理、日志管理、监控、项目管理 备份 备份软件 Amanda:客户端-服务器模型备...

716120
来自专栏CodingToDie

分布式事务解决方案

Spring Cloud 分布式事务管理 在微服务如火如荼的情况下,越来越多的项目开始尝试改造成微服务架构,微服务即带来了项目开发的方便性,又提高了运维难度以及...

64250
来自专栏coding

django2.0入门教程第一节启动开发模式下的服务器

17220
来自专栏IT技术精选文摘

Kafka详细设计及其生态系统

Kafka生态-Kafka Core,Kafka Streams,Kafka Connect,Kafka REST Proxy和Schema Registry ...

30570
来自专栏友弟技术工作室

Nginx架构--nginx系列之二Nginx的架构详解

Nginx的架构详解 今天,回家,这篇文章在机场候机,原文来自这里 NGINX 在网络应用中表现超群,在于其独特的设计。许多网络或应用服务器大都是基于线程或者进...

46290
来自专栏java一日一条

Nginx引入线程池 性能提升9倍

正如我们所知,NGINX采用了异步、事件驱动的方法来处理连接。这种处理方式无需(像使用传统架构的服务器一样)为每个请求创建额外的专用进程或者线程,而是在一个工作...

9810
来自专栏FreeBuf

记我在HackerOne上参与的一次漏洞众测邀请项目

这是一件关于我参与Hackerone平台某漏洞邀请项目的事,在此我要感谢该项目发起公司,他们友善的态度、及时的漏洞修复和奖金发放效率,让所有存在的提交漏洞都能在...

42340

扫码关注云+社区

领取腾讯云代金券