The Wayback Machine - https://web.archive.org/web/20221028211311/https://baike.sogou.com/kexue/d10156.htm

apache

编辑

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]

1 名字的由来编辑

多年来,人们对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]

2 功能概述编辑

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]

下面提供了更详细的功能列表:

  • 可加载动态模块
  • 多种请求处理模式(MPMs),包括基于事件/异步、线程和预工作。
  • 高度可扩展(轻松处理10,000多个同时连接)
  • 处理静态文件、索引文件、自动索引和内容协商
  • htaccess支持[14]
  • 带缓存的反向代理[15]
    • 带内运行状况检查的负载平衡[16]
    • 多重负载平衡机制
    • 具有自动恢复功能的容错和故障转移
    • 带缓存支持的WebSocket、FastCGI、SCGI、AJP和uWSGI
    • 动态配置[17]
  • 通过OpenSSL或wolfSSL支持SNI和OCSP装订。
  • 基于名称和IP地址的虚拟服务器
  • IPv6兼容
  • HTTP/2支持
  • 细粒度的身份验证和授权访问控制[18]
  • gzip压缩和解压缩
  • 网址重写[19]
  • 标题[20] 和内容[21][22] 重写
  • 带旋转的自定义日志记录
  • 并发连接限制
  • 请求处理速率限制
  • 带宽节流
  • 服务器端包括[23]
  • 基于IP地址的地理定位
  • 用户和会话跟踪[24]
  • WebDAV
  • 嵌入式Perl、PHP和Lua脚本
  • CGI 支持[25]
  • 每用户独立的public_html[26]
  • 通用表达式解析器[27]
  • 实时状态视图[28]
  • XML 支持[29]
  • FTP 支持(通过单独的模块) [30]

3 性能编辑

Apache提供了多种多样的多处理模块(MPMs),而不是实现单一的体系结构,这些模块允许Apache以基于进程的模式、混合(进程和线程)模式或事件混合模式运行,以便更好地匹配每个特定架构的需求。因此,选择MPM和配置非常重要。在必须牺牲性能的情况下,Apache旨在相对于简单地处理更多请求而言,减少延迟并提高吞吐量,从而确保在合理的时间范围内一致且可靠地处理请求。

对于交付静态页面,Apache 2.2系列被认为比nginx和varnish慢得多。[31]为了解决这个问题,Apache开发人员创建了事件MPM,它将几个进程和每个进程的几个线程混合使用在一个异步的基于事件的循环中。[32]吉姆·贾格尔斯基(im Jagielski )和其他独立的消息来源称,在Apache 2.4系列中实现的这种架构至少和基于事件的网络服务器一样出色。[33][34][35]然而,一些独立但明显过时的基准测试表明,它的速度仍然是nginx的一半[36]

4 许可证编辑

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]

4.1 版本

版本1.1: Apache许可证1.1于2000年获得ASF的批准:1.0许可证的主要变化在于“广告条款”(1.0许可证的第3节);衍生产品不再需要在其广告材料中包括属性,仅在其文档中包含。

版本2.0: ASF在2004年1月采用了Apache许可证2.0。许可证声明的目标包括使非ASF项目更容易使用许可证,提高与基于GPL的软件的兼容性,允许通过引用而不是在每个文件中列出许可证,澄清关于贡献的许可证,以及要求对于必然侵犯贡献者自己专利的贡献的专利许可证。

5 发展编辑

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]

参考文献

  • [1]

    ^"OS/Linux Distributions using Apache". secure1.securityspace.com. Retrieved 2018-09-17..

  • [2]

    ^"Platform Specific Notes - Apache HTTP Server Version 2.4". httpd.apache.org. Retrieved 2019-01-21..

  • [3]

    ^"HP OpenVMS systems - Secure Web Server (based on Apache)". h41379.www4.hpe.com..

  • [4]

    ^"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..

  • [5]

    ^Netcraft Market Share for Top Servers Across All Domains August 1995 - today (monthly updated).

  • [6]

    ^"February 2009 Web Server Survey". Netcraft. Archived from the original on 26 February 2009. Retrieved 2009-03-29..

  • [7]

    ^"August 2018 Web Server Survey". Netcraft. Retrieved 2018-09-17..

  • [8]

    ^"Apache Server Frequently Asked Questions". Archived from the original on 1997-01-06. Retrieved 15 January 2017..

  • [9]

    ^"Information on the Apache HTTP Server Project". 1997-04-15. Archived from the original on April 15, 1997..

  • [10]

    ^"Apache Power". Linux Magazine..

  • [11]

    ^"Apache Foundation". www.apache.org. Retrieved 22 August 2018..

  • [12]

    ^"Apache Docs". httpd.apache.org. Retrieved 22 August 2018..

  • [13]

    ^"What is Apache Web Server? Webopedia". webopedia.com..

  • [14]

    ^"Apache HTTP Server Tutorial: .htaccess files"..

  • [15]

    ^"mod_proxy"..

  • [16]

    ^"mod_proxy_balancer"..

  • [17]

    ^"Balancer Manager"..

  • [18]

    ^"Authentication and Authorization"..

  • [19]

    ^"mod_rewrite"..

  • [20]

    ^"mod_headers"..

  • [21]

    ^"mod_sed"..

  • [22]

    ^"mod_substitute"..

  • [23]

    ^"Apache httpd Tutorial: Introduction to Server Side Includes"..

  • [24]

    ^"mod_usertrack"..

  • [25]

    ^"Apache Tutorial: Dynamic Content with CGI"..

  • [26]

    ^"Per-user web directories"..

  • [27]

    ^"Expressions in Apache HTTP Server"..

  • [28]

    ^"mod_status"..

  • [29]

    ^"mod_xml2enc"..

  • [30]

    ^"Apache Module: mod_ftp"..

  • [31]

    ^"Serving static files: a comparison between Apache, Nginx, Varnish and G-WAN". Spoot!..

  • [32]

    ^"worker - Apache HTTP Server Version 2.2". apache.org..

  • [33]

    ^"Throughput evaluation of Apache 2.4.1"..

  • [34]

    ^"Picking a Proxy Server"..

  • [35]

    ^Apache httpd 2.4.

  • [36]

    ^"Performance of Apache 2.4 with the event MPM compared to Nginx". eschrade.com..

  • [37]

    ^"Apache License, Version 2.0". The Apache Software Foundation. January 2004. Retrieved 2013-05-21..

  • [38]

    ^Burton, Richard Antony. "FYI: Apache HTTP Server 2.0.49 Released". Newsgroup: alt.apache.configuration. Retrieved 2018-02-16..

  • [39]

    ^de Raadt, Theo (18 February 2004). "The new apache license". openbsd-misc (Mailing list). Retrieved 2013-05-21..

  • [40]

    ^"Copyright Policy". OpenBSD. Retrieved 2013-05-12..

  • [41]

    ^"apache-httpd-openbsd-1.3.20140502p2 – OpenBSD improved and secured version of Apache 1.3". OpenBSD ports. Retrieved 2014-12-28..

  • [42]

    ^"OpenBSD Upgrade Guide: 5.1 to 5.2". openbsd.org..

  • [43]

    ^jj, ed. (2014-03-14). "Heads Up: Apache Removed from Base". OpenBSD Journal..

  • [44]

    ^"OpenBSD Upgrade Guide: 5.5 to 5.6". openbsd.org..

  • [45]

    ^"Announcement: Apache 1.3.0 Released !". 1998-06-06. Retrieved 2015-01-06..

  • [46]

    ^"Apache HTTP Server 1.3.42 released (final release of 1.3.x)". apache.org..

  • [47]

    ^"Official Release: Apache 2.0.35 is now GA". 2002-04-06. Retrieved 2015-01-06..

  • [48]

    ^"[Announcement] Apache HTTP Server 2.0.65 Released". apache.org..

  • [49]

    ^"Apache HTTP Server 2.2.0 Released". 2005-12-01. Retrieved 2015-01-06..

  • [50]

    ^"[Announce] Apache HTTP Server 2.2.34 Released". apache.org..

  • [51]

    ^"[ANNOUNCEMENT] Apache HTTP Server 2.4.1 Released". 2012-02-21. Retrieved 2015-07-17..

  • [52]

    ^"Apache HTTP Server 2.4.39 Released". apache.org..

  • [53]

    ^Documentation Group. "About the Apache HTTP Server Project - The Apache HTTP Server Project". apache.org..

  • [54]

    ^The Apache HTTP Server Open Source Project on Ohloh. (n.d.). Ohloh, the open source network. Retrieved November 12, 2012.

  • [55]

    ^"Chapter 4. The Apache HTTP Server". fedoraproject.org..

阅读 9196
版本记录
  • 暂无