Apache HTTP服务器,通俗地说是Apache (/əˈpætʃi/ ə-PATCH-ee),是免费的开源跨平台网络服务器软件,根据Apache许可证2.0的条款发布。Apache是由Apache软件基金会赞助下的开放开发者社区开发和维护的。
绝大多数Apache服务器运行在Linux发行版上[1],但当前版本也运行在windows[2]和各种类似Unix的系统上。过去的版本也在OpenVMS[3]、NetWare、OS/2和其他操作系统上运行。[4]
Apache最初基于NCSA HTTPd服务器,在NCSA代码工作停滞后,于1995年初开始开发。Apache在万维网的最初发展中发挥了关键作用[5],迅速超过NCSA HPPPd成为主要的超文本传输协议(HTTP)服务器,并且自1996年4月以来一直是最受欢迎的。2009年,它成为第一个服务1亿多个网站的网络服务器软件[6]。截至2018年8月,据估计服务于39%的活跃网站和35%的前百万网站。[7]
多年来,人们对Apache这个名字的起源提出了许多解释。
从1995年Apache项目开始,官方文件就指出:[8][9]
Apache是一个可爱的名字。它基于一些现有的代码和一系列软件补丁,这是“补丁服务器”(A PAtCHy”)的双关语。
在2000年4月的一次采访中,Apache的创造者之一布莱恩·贝伦多夫(Brian Behlendorf)说:[10]
这个名字真是出人意料。我希望我能说这是一件奇妙的事情,但它是出乎意料的。我把它放在一个页面上,几个月后当这个项目开始时,我指着这个页面说:“嘿,你觉得这个想法怎么样?”...有人说他们喜欢这个名字,这是一个非常好的双关语。我说,“双关语?你什么意思?”他说,“嗯,我们正在用一堆软件补丁构建一个服务器,对吗?所以这是一个拼凑的网络服务器。”我说,“哦,好吧。”...当我想到这个名字的时候,没有。它只是暗示着:“不要像个囚犯。有点侵略性,踢一些屁股。”
自2013年以来,Apache基金会将该名称的来源解释为:[11]
“Apache”这个名字是出于对各种美洲土著民族的尊重而选择的,这些民族统称为Apache,以其高超的战争策略和无穷无尽的耐力而闻名。它还在“拼凑的网络服务器”(由一系列补丁组成的服务器)上做了一个可爱的双关语,但这不是它的起源。发布这一新软件的开发团队很快开始称自己为“Apache团队”。
当Apache在Unix下运行时,它的进程名是httpd,是“HTTP守护进程”的缩写。[12]
Apache支持多种功能,其中许多功能是作为扩展核心功能的编译模块实现的。这些可以从身份验证方案到支持服务器端编程语言,如Perl、Python、Tcl和PHP。流行的认证模块包括mod_access、mod_auth、mod_digest和mod_auth_digest,这个是mod_digest的后继模块。其他功能的示例包括安全套接字层和传输层安全支持(mod_ssl)、代理模块(mod_proxy)、网址重写模块(mod _重写)、自定义日志文件(mod_log_config)和过滤支持(mod_include和mod_ext_filter)。
Apache上流行的压缩方法包括外部扩展模块mod_gzip,实现该模块是为了帮助减少通过HTTP提供的网页的大小(流量)。ModSecurity是一个面向网络应用的开源入侵检测和防御引擎。Apache日志可以通过网络浏览器使用免费脚本进行分析,例如AWStats/W3Perl或Visitors。
虚拟主机允许一个Apache安装实体服务于多个不同的网站。例如,一台安装了Apache的计算机可以同时服务于www.example.com、www.example.org、test47.test-server.example.edu等。
Apache具有可配置的错误消息、基于DBMS的身份验证数据库、内容协商,并支持几种图形用户界面(GUIs)。
它支持密码认证和数字证书认证。因为源代码是免费提供的,所以任何人都可以根据特定需求调整服务器,并且有一个大型的Apache附加组件公共库。[13]
下面提供了更详细的功能列表:
Apache提供了多种多样的多处理模块(MPMs),而不是实现单一的体系结构,这些模块允许Apache以基于进程的模式、混合(进程和线程)模式或事件混合模式运行,以便更好地匹配每个特定架构的需求。因此,选择MPM和配置非常重要。在必须牺牲性能的情况下,Apache旨在相对于简单地处理更多请求而言,减少延迟并提高吞吐量,从而确保在合理的时间范围内一致且可靠地处理请求。
对于交付静态页面,Apache 2.2系列被认为比nginx和varnish慢得多。[31]为了解决这个问题,Apache开发人员创建了事件MPM,它将几个进程和每个进程的几个线程混合使用在一个异步的基于事件的循环中。[32]吉姆·贾格尔斯基(im Jagielski )和其他独立的消息来源称,在Apache 2.4系列中实现的这种架构至少和基于事件的网络服务器一样出色。[33][34][35]然而,一些独立但明显过时的基准测试表明,它的速度仍然是nginx的一半[36]。
Apache服务器代码库在2004年1月被重新授予Apache 2.0许可证(以前的1.1许可证)[37],Apache服务器1.3.31和2.0.49是使用新许可证的第一批版本。[38]
OpenBSD项目不喜欢这种变化,继续使用2.0版之前的Apache版本,实际上是为了它的目的而分叉Apache 1.3.x。[39][40][41]他们最初用Nginx替换了它,不久之后基于relayd项目,他们自己做了一个被称为OpenBSD Httpd的替换。[42][43][44]
版本1.1: Apache许可证1.1于2000年获得ASF的批准:1.0许可证的主要变化在于“广告条款”(1.0许可证的第3节);衍生产品不再需要在其广告材料中包括属性,仅在其文档中包含。
版本2.0: ASF在2004年1月采用了Apache许可证2.0。许可证声明的目标包括使非ASF项目更容易使用许可证,提高与基于GPL的软件的兼容性,允许通过引用而不是在每个文件中列出许可证,澄清关于贡献的许可证,以及要求对于必然侵犯贡献者自己专利的贡献的专利许可证。
Version | Initial release | Latest release |
---|---|---|
1.3 | 1998-06-06[45] | 2010-02-03 (1.3.42)[46] |
2.0 | 2002-04-06[47] | 2013-07-10 (2.0.65)[48] |
2.2 | 2005-12-01[49] | 2017-07-11 (2.2.34)[50] |
2.4 | 2012-02-21[51] | 2019-04-01 (2.4.39)[52] |
Apache 超文本传输协议(HTTP)服务器项目是一个协作软件开发项目,旨在创建一个健壮的、商业级的、功能丰富的、免费可用的超文本传输协议(HTTP)服务器源代码实现。该项目由世界各地的一组志愿者共同管理,他们使用互联网和网络来交流、规划和开发服务器及其相关文档。这个项目是Apache软件基金会的一部分。此外,数百名用户为项目贡献了想法、代码和文档。[53][54][55]
Apache 2.4放弃了对BeOS、TPF甚至更老平台的支持。[4]
^"OS/Linux Distributions using Apache". secure1.securityspace.com. Retrieved 2018-09-17..
^"Platform Specific Notes - Apache HTTP Server Version 2.4". httpd.apache.org. Retrieved 2019-01-21..
^"HP OpenVMS systems - Secure Web Server (based on Apache)". h41379.www4.hpe.com..
^"Upgrading to 2.4 from 2.2". Platform support has been removed for BeOS, TPF, and even older platforms such as A/UX, Next, and Tandem. These were believed to be broken anyway..
^Netcraft Market Share for Top Servers Across All Domains August 1995 - today (monthly updated).
^"February 2009 Web Server Survey". Netcraft. Archived from the original on 26 February 2009. Retrieved 2009-03-29..
^"August 2018 Web Server Survey". Netcraft. Retrieved 2018-09-17..
^"Apache Server Frequently Asked Questions". Archived from the original on 1997-01-06. Retrieved 15 January 2017..
^"Information on the Apache HTTP Server Project". 1997-04-15. Archived from the original on April 15, 1997..
^"Apache Power". Linux Magazine..
^"Apache Foundation". www.apache.org. Retrieved 22 August 2018..
^"Apache Docs". httpd.apache.org. Retrieved 22 August 2018..
^"What is Apache Web Server? Webopedia". webopedia.com..
^"Apache HTTP Server Tutorial: .htaccess files"..
^"mod_proxy"..
^"mod_proxy_balancer"..
^"Balancer Manager"..
^"Authentication and Authorization"..
^"mod_rewrite"..
^"mod_headers"..
^"mod_sed"..
^"mod_substitute"..
^"Apache httpd Tutorial: Introduction to Server Side Includes"..
^"mod_usertrack"..
^"Apache Tutorial: Dynamic Content with CGI"..
^"Per-user web directories"..
^"Expressions in Apache HTTP Server"..
^"mod_status"..
^"mod_xml2enc"..
^"Apache Module: mod_ftp"..
^"Serving static files: a comparison between Apache, Nginx, Varnish and G-WAN". Spoot!..
^"worker - Apache HTTP Server Version 2.2". apache.org..
^"Throughput evaluation of Apache 2.4.1"..
^"Picking a Proxy Server"..
^Apache httpd 2.4.
^"Performance of Apache 2.4 with the event MPM compared to Nginx". eschrade.com..
^"Apache License, Version 2.0". The Apache Software Foundation. January 2004. Retrieved 2013-05-21..
^Burton, Richard Antony. "FYI: Apache HTTP Server 2.0.49 Released". Newsgroup: alt.apache.configuration. Retrieved 2018-02-16..
^de Raadt, Theo (18 February 2004). "The new apache license". openbsd-misc (Mailing list). Retrieved 2013-05-21..
^"Copyright Policy". OpenBSD. Retrieved 2013-05-12..
^"apache-httpd-openbsd-1.3.20140502p2 – OpenBSD improved and secured version of Apache 1.3". OpenBSD ports. Retrieved 2014-12-28..
^"OpenBSD Upgrade Guide: 5.1 to 5.2". openbsd.org..
^jj, ed. (2014-03-14). "Heads Up: Apache Removed from Base". OpenBSD Journal..
^"OpenBSD Upgrade Guide: 5.5 to 5.6". openbsd.org..
^"Announcement: Apache 1.3.0 Released !". 1998-06-06. Retrieved 2015-01-06..
^"Apache HTTP Server 1.3.42 released (final release of 1.3.x)". apache.org..
^"Official Release: Apache 2.0.35 is now GA". 2002-04-06. Retrieved 2015-01-06..
^"[Announcement] Apache HTTP Server 2.0.65 Released". apache.org..
^"Apache HTTP Server 2.2.0 Released". 2005-12-01. Retrieved 2015-01-06..
^"[Announce] Apache HTTP Server 2.2.34 Released". apache.org..
^"[ANNOUNCEMENT] Apache HTTP Server 2.4.1 Released". 2012-02-21. Retrieved 2015-07-17..
^"Apache HTTP Server 2.4.39 Released". apache.org..
^Documentation Group. "About the Apache HTTP Server Project - The Apache HTTP Server Project". apache.org..
^The Apache HTTP Server Open Source Project on Ohloh. (n.d.). Ohloh, the open source network. Retrieved November 12, 2012.
^"Chapter 4. The Apache HTTP Server". fedoraproject.org..
暂无