🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

Apache 是什么?通俗易懂地解说 Web 服务器的基础知识和工作原理

想尝试制作网站!但一听到“Web 服务器”或“Apache (阿帕奇)”这些词,是不是就觉得很难?别担心!在本文中,我们将以图文并茂的形象方式,为网页制作的初学者通俗易懂地解说从 Web 服务器的基础知识到 Apache 的工作原理。我们也会对专业术语进行详细解释,请您放心阅读。

本文最大的目标,就是让大家体验到“原来在 Web 上发布是这么回事!”的“成功运行”的喜悦。我们准备了大量可以即抄即用的示例代码,让我们一起动手,掌握 Web 服务器的工作原理吧!


首先,Web 服务器是什么?

我们先来看看 Web 服务器的角色。简单来说,它就是“一台根据我们的请求,提供网页数据的计算机”。

用餐厅来打比方可能会更容易理解:

当您在浏览器中输入 URL 或点击链接时,浏览器会向 Web 服务器发送一个请求 (Request),意思是“请显示这个页面!”。Web 服务器接收到该请求后,会以响应 (Response) 的形式,将网页的 HTML 文件、图片等数据返回给浏览器。正因为有这一系列流程,我们才能浏览网站。


通信规则“HTTP”是什么?

为了让 Web 服务器和浏览器能够对话(通信),它们需要一种双方都能理解的共同语言,也就是“规则”。这个规则就是 HTTP (HyperText Transfer Protocol,超文本传输协议)

用刚才餐厅的比喻来说,这就像是规定了点餐的方式(“我想要XX菜”)和上菜的方式(“这是您点的XX菜”)。数据的交换就是遵循着 HTTP 这个规则进行的。

浏览器地址栏中显示的 `http://` 或 `https://` 就是在声明“我们将使用此规则进行通信”。(`https` 中的 `s` 是 Secure 的缩写,表示通信内容经过加密,提高了安全性)。


正题!Apache 是什么?

好了,终于到了正题——Apache (阿帕奇)。Apache 是全世界使用最广泛的 Web 服务器软件之一。它的正式名称是“Apache HTTP Server”。

您可以认为,Apache 就是在计算机上实际扮演我们刚才比喻中“服务员”角色的软件。通过在计算机上安装 Apache,就可以让这台计算机作为 Web 服务器来运行。

Apache 的过人之处


【实践】尝试用 Apache 发布网页吧!

理论就讲到这里,让我们实际动手,体验一下发布网页的过程吧!这里,我们假设您的电脑上已经安装了 Apache。(关于安装方法,我们将在下一篇文章中详细解说!)

步骤 1: 创建要发布的 HTML 文件

首先,我们来创建一个包含网页显示内容的 HTML 文件。这是一个非常简单的页面,只显示“你好,世界!”。请将此文件保存为 `index.html`。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>我的第一个 Apache 页面</title>
</head>
<body>
    <h1>你好,世界!</h1>
    <p>此页面正通过 Apache 显示。</p>
</body>
</html>

步骤 2: 确认并编辑 Apache 的配置文件

接下来,我们需要告诉 Apache “应该发布放在哪里的网页文件”。执行此设置的文件是 `httpd.conf`。

其中一个特别重要的配置项是 `DocumentRoot`。在这里,我们需要指定存放用于 Web 发布的文件的目录(文件夹)的位置,比如我们刚才创建的 `index.html`。

例如,如果 `DocumentRoot` 设置为 `/usr/local/apache2/htdocs`,那么只要将 `index.html` 文件放入 `/usr/local/apache2/htdocs` 目录中,就可以通过 Web 浏览器访问它了。

以下是 `httpd.conf` 配置文件的一部分示例。请根据您的环境替换路径。※此代码仅用于说明。请不要直接修改您自己的配置文件。

# Listen: 服务器监听请求的端口号
# 通常,HTTP 使用 80 端口
Listen 80

# DocumentRoot: 存放 Web 内容的目录路径
# 将您的 HTML 文件等放在此目录中
# (在 Windows 上可能是 "C:/Apache24/htdocs")
DocumentRoot "/usr/local/apache2/htdocs"

# 针对 DocumentRoot 指定目录的设置
<Directory "/usr/local/apache2/htdocs">
    # 允许通过 .htaccess 文件覆盖配置
    AllowOverride All
    # 允许所有请求
    Require all granted
</Directory>

【重要】 编辑 `httpd.conf` 文件后,必须重启 Apache 才能使设置生效。


【应用示例】使用 .htaccess 进一步玩转 Apache

Apache 的一个强大功能是 `.htaccess` 文件。通常,整个服务器的配置是在 `httpd.conf` 中进行的,但如果您想添加只在特定目录中生效的规则,`.htaccess` 文件就能派上用场。

在运营网站时,您可能会遇到诸如“想把不带 www 的 URL 统一为带 www 的”或“想给特定页面设置密码”等需求。这时,`.htaccess` 就能大显身手。

应用示例 1: URL 规范化 (统一为带 www)

从 SEO (搜索引擎优化) 的角度来看,`example.com` 和 `www.example.com` 这样 URL 分散的情况并不理想。此设置可将所有访问重定向到 `www.example.com`。请创建一个包含以下内容的 `.htaccess` 文件,并将其放置在 `DocumentRoot` 目录中。

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

应用示例 2: 为目录设置密码 (基本认证)

当您想为特定目录(如会员专区)设置访问限制时,可以使用基本认证。首先,在要保护的目录中放置一个包含以下内容的 `.htaccess` 文件。

AuthType Basic
AuthName "Secret Area"
AuthUserFile /path/to/.htpasswd
Require valid-user

接下来,创建一个记录了允许访问的用户名和密码的 `.htpasswd` 文件。请将 `/path/to/` 部分替换为您服务器上的适当路径。一个基本原则是,此文件应放置在无法从 Web 访问的位置。

# 用户名为 "myuser" 及其加密密码的示例
myuser:$apr1$abcdefg$hijklmnopqrstuvwxyz.

※ `.htpasswd` 文件通常使用专门的命令或 Web 工具生成。


应用示例 3: 拒绝来自特定 IP 地址的访问

此设置用于阻止来自特定 IP 地址的恶意访问。您可以指定要拒绝的 IP 地址。

Require all granted
Require not ip 192.168.1.100
Require not ip 10.0.0.0/8

需要注意的地方

Apache 非常强大,但如果配置错误,可能会产生安全风险或导致网站无法显示。


总结

在本文中,我们解说了从 Web 服务器的基本工作原理,到代表性 Web 服务器软件 Apache 的作用,以及发布简单网页的步骤和应用示例。

一开始可能会觉得很难,但当您亲手制作的 `index.html` 在浏览器中成功显示时所带来的感动,是体验 Web 制作乐趣的第一步。Apache 是一个可靠的伙伴,它能将您创建的网站传递给世界各地的人们。希望本文能成为您深化 Web 服务器知识、并将其应用于创作活动的契机。

作为下一步,首先尝试在您自己的电脑上安装 Apache 吧!关于各操作系统的详细安装方法,请参考以下文章。

2. 【各操作系统】在 Windows / macOS / Linux 上安装 Apache 的方法