Apache HTTP Server 详细介绍
一、概述
Apache(全称 Apache HTTP Server)是一个开源的、跨平台的 Web 服务器软件,由 Apache 软件基金会开发和维护。自 1995 年发布以来,长期占据全球 Web 服务器市场份额第一(目前与 Nginx 竞争激烈)。
二、核心特性
- 模块化设计
- 通过加载模块扩展功能(如 SSL、压缩、身份验证等)。
- 支持动态模块加载(DSO)。
- 跨平台性
- 可在 Windows、Linux、Unix、macOS 等系统运行。
- 配置灵活
- 基于文本的配置文件(如
httpd.conf)。 - 支持目录级配置(
.htaccess文件)。
- 基于文本的配置文件(如
- 功能丰富
- 虚拟主机、URL 重写、负载均衡、代理服务等。
- 支持多种编程语言(PHP、Python、Perl 等)。
- 安全性
- 提供访问控制、身份验证、SSL/TLS 加密。
- 定期发布安全更新。
三、架构与工作原理
- MPM(多处理模块)机制
根据不同操作系统选择并发处理模型:- Prefork MPM:多进程模型,每个请求由独立子进程处理,稳定性高。
- Worker MPM:多进程 + 多线程混合模型,资源占用较少。
- Event MPM(推荐):基于事件驱动,高并发性能优异。
- 请求处理流程 客户端请求 → 监听端口 → MPM 分配资源 → 模块链处理 → 返回响应
四、配置文件结构
主配置文件通常为 httpd.conf,包含:
# 全局配置
ServerRoot "/etc/httpd"
Listen 80
LoadModule php_module modules/mod_php.so
# 虚拟主机配置
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
五、核心功能模块
| 模块名称 | 功能说明 |
|---|---|
mod_rewrite | URL 重写与重定向 |
mod_ssl | HTTPS 加密支持 |
mod_proxy | 反向代理与负载均衡 |
mod_cache | 内容缓存 |
mod_security | Web 应用防火墙(需额外安装) |
六、典型应用场景
- 静态网站托管
直接提供 HTML、CSS、图片等静态资源。 - 动态应用支持
通过模块集成语言解释器:- PHP:
mod_php - Python:
mod_wsgi - Java:
mod_jk
- PHP:
- 反向代理服务器
将请求转发到后端应用服务器(如 Tomcat、Node.js)。 - 负载均衡
使用mod_proxy_balancer分配流量到多台后端服务器。
七、基础配置示例
# 1. 更改监听端口
Listen 8080
# 2. 设置虚拟主机(基于域名)
<VirtualHost *:80>
DocumentRoot "/www/site1"
ServerName site1.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/www/site2"
ServerName site2.com
</VirtualHost>
# 3. URL 重写示例(将短链接重定向)
RewriteEngine On
RewriteRule ^/short/(.*)$ /long-page.php?id=$1 [L]
# 4. 密码保护目录
<Directory "/secure">
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/httpd/.htpasswd
Require valid-user
</Directory>
八、性能优化建议
- 选择合适 MPM
Linux 下推荐使用Event MPM。 - 调整并发参数
# Event MPM 配置示例 StartServers 3 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 - 启用压缩
LoadModule deflate_module modules/mod_deflate.so DeflateCompressionLevel 6 - 缓存静态资源
ExpiresActive On ExpiresByType image/jpg "access plus 1 month"
九、安全配置要点
- 隐藏版本信息
ServerTokens Prod ServerSignature Off - 限制目录访问
<Directory /> Options None AllowOverride None Require all denied </Directory> - 禁用不必要的模块
如mod_info、mod_status等。
十、常用命令
# 启动/停止/重启
sudo systemctl start httpd
sudo apachectl restart
# 测试配置文件语法
apachectl -t
# 查看已加载模块
httpd -M
# 查看运行状态
systemctl status httpd
十一、与 Nginx 对比
| 方面 | Apache | Nginx |
|---|---|---|
| 并发模型 | 进程/线程模型 | 事件驱动模型 |
| 内存消耗 | 相对较高 | 较低 |
| 静态资源性能 | 一般 | 优秀 |
| 动态内容处理 | 原生支持良好 | 需通过 FastCGI 转发 |
| .htaccess 支持 | 支持 | 不支持 |
十二、发展趋势
- Apache 2.4+ 版本显著提升性能,支持 HTTP/2。
- 云原生场景中常与 Nginx 组合使用(Nginx 前置处理静态请求)。
- 持续集成微服务、容器化支持(如 httpd Docker 镜像)。
Apache 以其稳定性、模块化和广泛的社区支持,仍是企业级应用和传统 Web 服务的可靠选择。学习 Apache 有助于深入理解 Web 服务器原理及运维技术。

