# Windows 上的 Apache 2.4：遗留路径，不是默认选择

> 只在兼容场景用 Apache 2.4：选可信二进制、配置 httpd.conf、安装服务，并理解反代与 Windows 限制。

**测试环境**

- 版本号: 26100.33650
- 版本: Standard / Datacenter
- 架构: x64
- 证据: E1
- 核验日期: 2026-10-29

## 一句话结论

Apache 2.4 **能**在 Windows 跑，但它是兼容路径：

- ASF 不发布官方 Windows 二进制；多数团队用 Apache Lounge 构建；
- Windows 用 `mpm_winnt`，不是 Linux 的 MPM；
- 模块更少、性能特性不同；
- Windows 上通常 IIS 或 Nginx 更合适。

只在应用/厂商要求、或迁移既有 `.htaccess`/httpd 配置时用 Apache。

## 安装

1. 取可信 x64 构建（Apache Lounge 或你已在打补丁的厂商）。
2. 解压到 `C:\Apache24`（无空格）。
3. 改 `conf/httpd.conf`：
   - `ServerRoot "C:/Apache24"`
   - IIS 占 80 就 `Listen 8080`
   - `DocumentRoot "C:/sites/lab"`
   - `<Directory "C:/sites/lab">` 里 `Require all granted`
4. 测配置并装服务：

```bat
C:\Apache24\bin\httpd.exe -t
C:\Apache24\bin\httpd.exe -k install
C:\Apache24\bin\httpd.exe -k start
```

配置路径用正斜杠。`httpd -t` 通过再 `-k start`。

## 模块

只开应用需要的：

```apache
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule ssl_module modules/mod_ssl.so
```

`mod_proxy` 不限制会变开放代理。`ProxyRequests Off`，只代理已知上游：

```apache
ProxyRequests Off
ProxyPass "/app/" "http://127.0.0.1:3000/"
ProxyPassReverse "/app/" "http://127.0.0.1:3000/"
```

`ProxyPassReverse` 改写重定向；没有它，应用可能跳到内部主机名。

## TLS

```apache
Listen 443
<VirtualHost *:443>
  ServerName lab.local
  SSLEngine on
  SSLCertificateFile "C:/Apache24/conf/lab.crt"
  SSLCertificateKeyFile "C:/Apache24/conf/lab.key"
  DocumentRoot "C:/sites/lab"
</VirtualHost>
```

还是 PEM；不直接读 Windows 证书存储。用 `httpd -t` 和 `openssl s_client` 测。

## Windows 边界

| 主题 | Windows Apache |
|---|---|
| 官方二进制 | ASF 不提供；用可信构建 |
| MPM | `mpm_winnt` |
| `.htaccess` | 能用，但每请求开销；优先 vhost 配置 |
| 服务 | `httpd -k install` |
| 性能 | 不等价 Linux |
| HTTP/3 | 看构建/模块，不能假设 |

> **警告: 不要暴露默认 Apache**
>
> 默认页和 `server-status` 会泄露安装信息。删示例内容，`/server-status` 只允许 localhost，`ServerTokens Prod`。

## 迁移检查表

- 映射 `DocumentRoot` 和 vhost。
- 逐条迁 `LoadModule` 和 `.htaccess` 规则；`httpd -t` 测。
- 移 TLS PEM/key 并设 ACL。
- 替换 `ProxyPass` 目标，验证 `ProxyPassReverse`。
- 测 Host 头、重定向、上传和日志。
- 如果 Apache 只是历史包袱，目标还是 IIS/Nginx。

## 实验室边界

E1。实验室没有安装 Apache。命令和配置是迁移起点；具体构建/模块在 Server 2025 上验证。

## 来源

- [Apache HTTP Server — Windows 平台](https://httpd.apache.org/docs/2.4/platform/windows.html)
- [Apache HTTP Server — httpd](https://httpd.apache.org/docs/2.4/programs/httpd.html)
- [Apache HTTP Server — 反向代理](https://httpd.apache.org/docs/2.4/mod/mod_proxy.html)

---

来源页面: https://winbook.fyi/zh/server/web/apache-legacy/
