Apache httpd基础篇01 — 介绍

概述

本章,您将了解并认识 Apache httpd。

基础概念或知识

在正式介绍 Apahe httpd 之前,需要介绍一些基础的概念或知识:

  • 静态网站:把不支持数据交互的网站或页面称为静态网站,常以后缀 ".html" 或 "htm" 或 "shtml" 显示在浏览器的地址栏中。静态网站中被用户请求的资源是保存在服务器上的文件,一经发布之后,无论用户什么时候访问,页面呈现都没有变化(除非管理员手动修改了服务器上对应的文件内容)。

  • 动态网站:把以数据库为基础且支持数据交互的网站称为动态网站,常以 ‌".asp‌" 或 ".jsp‌"或 ".php‌" 或 ".cgi‌" 或 ".perl‌" 等后缀显示在浏览器地址栏中,除此之外,地址栏中还会有 "?" 这个标识,代表着传递给服务器的查询参数,从请求方式来看, "?" 也代表了这是一次 GET 请求方式。

  • HTML 语言:Hyper Text Markup Language,超文本标记语言,这是一门用来搭建网页骨架的语言。所谓「超文本」,指的是利用超链接把各个页面链接起来,在互联网上互相跳转。所谓「标记」,指的是通过各种「标签」语法来给内容做标记。所谓「语言」,指的是能被计算机的浏览器所识别并阅读。

  • HTTP 协议:超文本传输协议,属于 TCP/IP 协议族中应用层的其中一个协议,主要目的就是让双方在满足规则的前提下互相进行通信,可类比为客户端与服务器之间的「信使」。该协议有不同的版本,见下表

    版本 产生时间 主要特性 发展现状
    HTTP/0.9 1991年 不涉及数据包传输,规定客户端与服务器之间的通信格式,只能使用 GET 请求 没有作为正式标准
    HTTP/1.0 1996年 扩展了多种请求方法(新增 POST、HEAD);引入请求/响应头部,支持传输任意格式数据(图片、视频、二进制等);建立了标准状态码机制;支持缓存控制 正式标准
    HTTP/1.1 1997年 持久连接(长连接)、节约带宽、管道机制以及分块传输编码,新增 PUT、DELETE、OPTIONS 等方法 至今仍广泛使用,兼容性最好
    HTTP/2 2015年 多路复用、服务器推送、头信息压缩、二进制协议、强制要求加密等 当前主流使用的版本之一
    HTTP/3 2022年 基于 ‌QUIC 协议(UDP传输层)‌,彻底解决 TCP 层队头阻塞;支持 0-RTT 快速握手建立连接;支持连接迁移(IP 变化无缝切换);使用 QPACK 改进头部压缩;默认强制加密 逐步推广中
  • HTTPS 协议:在 HTTP 协议之上利用 SSL/TLS 建立安全信道,加密数据包。

  • URL:统一资源定位,是一种定位资源位置且有标准格式的地址。比如 "https://www.example.com:8080/path/file.html?id=123#section1" 这种典型,其中 "https:" 表示协议;"www.example.com" 表示域下的一个主机,即主机名;"8080" 表示端口号;"/path/" 表示路径,类似于 GNU/Linux 中文件所在的目录路径那样,而 file.html 表示对应路径中的文件;"?id=123" 表示想服务器传递的查询参数,查询参数以键值对的形式出现,多个查询参数之间用 "&" 符号连接;"#section1" 指片段标识符,用来指向资源内部中的一个特定位置。在 URL 中,协议以及主机名是最核心的,其余部分则是可选的。由于 URL 只能使用 ASCII 中的字符集,因此对于不安全的字符(如空格或中文),则需要通过 "%" 加上两位十六进制数字的方式进行转码。"URL" 在口语中常被称为 "WEB 地址",而口语当中的 "浏览器地址" 则是去掉了协议部分(协议部分由浏览器自动填充)的 URL

  • URI:统一资源标识,用来标识网页当中的资源,标识的方式有两种:要么告诉你资源在哪里(URL),要么告诉你资源叫什么(URN)。在概念上,URI 的范围比 URL 大,而 URL 属于 URI 的其中一个子集,如在上面的 "https://www.example.com:8080/path/file.html?id=123#section1" ,它既可以被称为 URL ,也可以被称为 URI

  • URN:统一资源名称,通过特定命名空间来对资源进行名称上的标识,如 urn:isbn:9780141036144 代表了书籍 《一九八四》 的 ISBN 书号。URN 只负责资源的命名,而不负责资源的实际定位(不会告诉你资源应该使用什么协议获取以及实际的存放路径位置)。在概念上,URI 的范围比 URN 大,而 URN 属于 URI 的其中一个子集

提示
在大多数的日常交谈中,人们会将 URI 和 URL 混为一谈,在非正式场合是没问题的。但在技术领域的文档中,这两者并不能直接划等号。

Apache httpd 介绍

Apache httpd 是 UNIX、Windows、GNU/Linux 操作系统下一款老牌的开源的 Web 服务器程序/软件,由于其安全性、跨平台性、开源性、稳定性、多模块化等特点,被世界各地的个人或企业广泛的使用,是世界上流行的 Web 服务器程序/软件之一。Apache httpd 除了被用作 Web 服务器之外,它还具有反向代理的能力,实现负载均衡的效果。

现如今的开源 Web 服务器程序/软件竞争日趋激烈,除了Apache httpd,还存在其他优秀的高性能 Web 服务器程序/软件,如:

在开源 Web 服务器里,Apache httpd 的最大竞争对手之一是 Nginx。若您需要查看每个月世界各地使用 Web 服务器软件/程序的情况,点击 此处 进行查看。

发展历史

在 1995 年 2 月诞生了 httpd ,其由伊利诺伊大学香槟分校的国家超级电脑应用中心(National Center for Supercomputer Applications,NCSA)的 Rob McCool 进行主导开发。后来 Rob McCool 于 1994 年中期离开了 NCSA,该软件的开发与修复工作就陷入了停滞状态,这导致很多网站管理员需要自己开发扩展程序并修复程序,而且还需要进行统一的分发工作。这些网站管理员中的一小部分通过私人电子邮件联系在了一起,目的是协调软件所做的更改(以 "补丁" 的方式)。以 NCSA httpd 1.3 为基础,这部分人添加了所有已发现的错误修复和有价值的增强功能,并在自己的服务器上测试了结果,并于 1995 年 4 月首次发布了 Apache httpd 的正式版本(0.6.2),同年,8 名核心开发者组成的协作团体正式定名为 ‌Apache Group‌,这是 ASF(Apache Software Foundation,阿帕奇软件基金会)的前身。富有戏剧性的是,就在 Apache httpd 正式版诞生之前,NCSA 在同一时期重启了他们的开发工作,不过双方并没有走向对立,而是选择了合作 —— NCSA 服务器开发团队的 Brandon LongBeth Frank 在 3 月份以名誉成员的身份加入到了 Apache httpd 的邮件列表,以便两个项目可以共享想法和修正。时间来到 1999 年 6 月,‌Apache Group 开始改组为 ASF(Apache Software Foundation,阿帕奇软件基金会)。

  • 1995 年 4 月发布 0.6.2 版本 - 正式对外公布的第一个版本,此时的 Apache httpd 本质上还是一套整合了大量社区补丁的改良版本,但已经标志着独立项目的诞生。
  • 1995 年年中发布 0.8.8 版本 - Robert Thau 设计了全新的服务器架构,代号 Shambhala,重要特性包括模块化结构设计、革命性的模块化 API、请求处理的阶段性分解、配置模块化等
  • 1995 年 12 月 1 日发布 1.0 版本 - 里程碑版本之一,用户可以通过动态加载模块扩展功能。发布后仅一年内‌,Apache httpd 便超越 NCSA httpd,成为当时全球使用量最大的 Web 服务器
  • 1998 年发布 1.3 版本 - Apache httpd 发展史上最重要的里程碑版本之一,该版本修复了数百个漏洞,大幅优化了性能,并实现了‌跨平台运行‌(Unix、Windows 等)。到 1999 年,Apache httpd 的全球市场份额稳坐 Web 服务器霸主地位
  • 2000 年发布 2.0 版本 - 架构重大升级,引入 MPM (Multi-Processing Modules,多处理模块),同时也开始支持 IPv6
  • 2005 年发布 2.2 版本 - 进一步优化了 MPM 模型和缓存机制,在稳定性和性能平衡上持续打磨
  • 2012 年发布 2.4 版本 - 官方推荐的稳定版本,带来了event MPM 的异步 I/O 支持等关键更新,至今仍然在持续优化和打磨
提示
Apache httpd 是 ASF 的其中一个开源项目,在非正式表述时,人们常用 Apache 指代 Apache httpd(或 Apache httpd server)。

相关资料与文档

Avatar photo

关于 陸風睿

GNU/Linux 从业者、开源爱好者、技术钻研者,撰写文档既是兴趣也是工作内容之一。Q - "281957576";WeChat - "jiulongxiaotianci",Github - https://github.com/jimcat8
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇