一、Apache 是什么
Apache HTTP Server(简称 Apache)是 Apache 软件基金会开发维护的开源、跨平台 Web 服务器,1995 年发布,长期是全球最主流的 Web 服务器之一。
- 核心作用:接收浏览器 HTTP/HTTPS 请求,返回网页、图片、接口数据等资源。
- 名字由来:源于 NCSA HTTPd 补丁集合(“A Patchy Server”),后定名 Apache。
二、核心特性
- 模块化设计(DSO)
功能以模块插拔:
mod_ssl(HTTPS)、mod_rewrite(URL 重写)、mod_proxy(反向代理)等,按需加载。 - 跨平台
支持 Linux、Windows、macOS、Unix 全平台部署。
- 配置灵活
- 主配置:
httpd.conf(全局) - 目录配置:
.htaccess(子目录独立规则,无需重启服务)
- 主配置:
- 功能丰富
虚拟主机(多站点)、负载均衡、反向代理、访问控制、HTTPS、URL 重写。
- 稳定安全
20+ 年生产验证,定期安全更新,支持权限控制、SSL/TLS 加密。
- 生态成熟
文档完善、社区活跃,兼容 PHP/Python/Perl 等语言。
三、版本与架构
- 主流版本:2.4.x(当前稳定版,支持 HTTP/2、Event MPM,性能显著提升)。
- MPM 多处理模块(核心并发模型):
- Prefork:多进程、无线程,稳定、兼容旧程序,高并发内存占用高。
- Worker:多进程 + 多线程,并发优于 Prefork。
- Event:异步事件驱动,长连接 / 高并发场景资源占用最低(2.4 默认推荐)。
四、安装(主流系统)
1. Linux(CentOS/RHEL)
bash
运行
# 安装
yum install httpd -y
# 启动/开机自启
systemctl start httpd
systemctl enable httpd
# 状态/版本
systemctl status httpd
httpd -v
- 访问:
http://服务器IP,默认页面即成功。
2. Linux(Ubuntu/Debian)
bash
运行
apt update
apt install apache2 -y
systemctl start apache2
systemctl enable apache2
3. Windows
- 方式 1:官网下载编译包(httpd-2.4.x-win64),解压后
httpd.exe -k install注册服务。 - 方式 2(推荐新手):用 XAMPP/WAMP 集成包,一键安装 Apache+PHP+MySQL。
4. macOS
bash
运行
# 启动预装 Apache
sudo apachectl start
# 停止/重启
sudo apachectl stop
sudo apachectl restart
五、核心配置(httpd.conf)
路径:
- Linux:
/etc/httpd/conf/httpd.conf或/etc/apache2/apache2.conf - Windows:
安装目录/conf/httpd.conf
常用配置项:
apache
# 监听端口(默认80)
Listen 80
# 服务器根目录
DocumentRoot "/var/www/html"
# 域名/IP
ServerName localhost:80
# 开启模块(示例)
LoadModule rewrite_module modules/mod_rewrite.so
# 目录权限
<Directory "/var/www/html">
AllowOverride All # 允许.htaccess
Require all granted
</Directory>
- 修改后重启生效:
systemctl restart httpd(Linux)或httpd.exe -k restart(Windows)。
六、常用功能配置示例
1. 虚拟主机(多站点)
同一服务器部署多个网站(基于域名):
apache
# 站点1:www.a.com
<VirtualHost *:80>
ServerName www.a.com
DocumentRoot "/var/www/a"
ErrorLog "logs/a-error.log"
CustomLog "logs/a-access.log" common
</VirtualHost>
# 站点2:www.b.com
<VirtualHost *:80>
ServerName www.b.com
DocumentRoot "/var/www/b"
</VirtualHost>
2. HTTPS 配置(mod_ssl)
apache
<VirtualHost *:443>
ServerName www.a.com
SSLEngine on
SSLCertificateFile "/etc/httpd/certs/a.crt"
SSLCertificateKeyFile "/etc/httpd/certs/a.key"
DocumentRoot "/var/www/a"
</VirtualHost>
3. URL 重写(.htaccess 伪静态)
网站目录新建
.htaccess:apache
RewriteEngine On
# 301 重定向:http 转 https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# 伪静态:/page/1 指向 /page.php?id=1
RewriteRule ^page/(\d+)$ page.php?id=$1 [L]
七、Apache vs Nginx
表格
| 对比项 | Apache | Nginx |
|---|---|---|
| 并发模型 | 多进程 / 多线程 / 事件驱动 | 异步事件驱动(单进程多线程) |
| 高并发性能 | 中等(Event 提升明显) | 极高(万级并发低内存) |
| 配置复杂度 | 灵活(.htaccess 友好) | 简洁,无 .htaccess |
| 稳定性 | 极强 | 强 |
| 适用场景 | 传统企业、共享主机、复杂规则 | 高并发站点、反向代理、负载均衡 |
八、常见问题与排查
- 端口占用(80 被占)
- 查看占用:
netstat -tuln | grep 80(Linux)或netstat -ano | findstr :80(Windows) - 改端口:
Listen 8080,重启服务。
- 查看占用:
- 403 Forbidden
- 目录权限不足:
chmod -R 755 /var/www/html(Linux) httpd.conf中Require all granted未开启。
- 目录权限不足:
- 模块未加载
- 查看已加载模块:
httpd -M(Linux)或httpd.exe -M(Windows) - 确认
LoadModule指令未注释。
- 查看已加载模块:
九、总结
Apache 是稳定、灵活、生态完善的经典 Web 服务器,适合传统业务、复杂配置场景;高并发场景可与 Nginx 组合(Nginx 做反向代理 / 静态资源,Apache 处理动态请求)。