跳至主要内容
五折优惠 全部方案,限时优惠。起价 $2.48/mo
12 min left
Web 与商业应用

Apache 与 NGINX:哪个 Web 服务器最适合 WordPress?

Ivarr Vinter 作者 Ivarr Vinter 12 分钟阅读 更新者 Chike 30d ago
Apache vs. NGINX: the Apache feather logo and the NGINX hexagon logo facing each other across a lightning split, on a dark Cloudzy-branded backdrop

如果你在自己的 VPS 上运行 WordPress,Apache 和 NGINX 都能把站点服务好,只是取舍不同。在高并发、静态文件分发以及可选的 HTTP/3 方面,NGINX 通常是更好的默认选择。如果你的 WordPress 技术栈依赖 .htaccess 或 Apache 专有模块,那么 Apache 更省事。

这篇 Apache 与 NGINX 的对比只关注对 WordPress 真正重要的差异:架构、PHP 处理方式、配置、HTTP/3,以及同时运行两者是否值得额外的复杂度。LiteSpeed 和 Caddy 不在讨论范围内。

简短的结论:自管的 WordPress VPS 默认选 NGINX。如果站点或插件严重依赖 .htaccess,就选 Apache。只有在你确实需要把 NGINX 放在前面、同时又不想放弃 Apache 兼容性时,才同时运行两者。

什么是 Apache?

Apache 是一款广泛使用的开源 Web 服务器软件,由美国非营利组织 Apache 软件基金会(ASF)开发和维护。它也被称为 Apache HTTP Server 或 HTTPD。

Apache 的下载页面 列出的当前稳定版本是 2026 年 6 月发布的 2.4.68。

Apache HTTP Server 是一款模块化的开源服务器,对按目录生效的 .htaccess 规则、多种多处理模块(MPM)、反向代理、URL 重写、TLS 和动态加载模块都有成熟支持。对 WordPress 来说,它最大的实际优势是配置兼容性,而不是原始速度。

在这次比较中最重要的 Apache 特性包括:prefork、worker 和 event 三种 MPM;.htaccess;HTTP/2;反向代理与负载均衡;FastCGI 支持;动态模块;URL 重写;以及 TLS。

什么是 NGINX?

NGINX("engine x")是一款开源的 Web 服务器,同时也是反向代理、内容缓存、负载均衡器、TCP/UDP 代理和邮件代理,最初由 Igor Sysoev 编写。它的 worker 进程采用事件驱动模型,设计目标是以较低的单连接开销处理大量并发连接。

NGINX 的下载页面 lists the 1.30.x stable branch and the 1.31.x mainline branch.

Apache 与 NGINX:对 WordPress 而言的关键差异

Apache 和 NGINX 最明显的差别在于它们如何处理连接、配置、PHP 以及协议支持。Apache 的行为很大程度上取决于所运行的 MPM,而 NGINX 使用事件驱动的 worker 进程。

Apache 与 NGINX:架构

对比 Apache 的 prefork、worker、event 三种 MPM 与 NGINX worker 进程的示意图:prefork 每个连接一个进程,worker 让连接留在线程上,event 把空闲的 keep-alive 连接交给监听线程,而 NGINX 从单个事件循环监视大量套接字,只在连接就绪时才派发工作

Apache 的请求处理模型取决于你运行的 MPM。prefork 基于进程,而 worker 和 event 使用线程。NGINX 则使用围绕事件循环构建的 worker 进程。因此,人们熟悉的"进程驱动的 Apache 对事件驱动的 NGINX"这种比较,对当下的 Apache 2.4 配置来说过于简单了。

Apache 的 event MPM 可以把空闲的 keep-alive 连接交给它的监听线程,而不必为每个连接占用一个 worker 线程。在并发连接数非常高时,NGINX 的单连接开销通常仍然更低,但架构上的差距远比 prefork 时代的老比较所暗示的要小。

Apache 与 NGINX:性能

NGINX 的性能优势主要体现在高并发和静态文件负载上。它的事件驱动 worker 能以相对较低的单连接开销保持大量连接。Apache 的 event MPM 与更早的 prefork 配置相比,已经把这个差距缩小了不少。

WordPress 的动态请求则是另一回事。NGINX 通常把 PHP 交给 FastCGI,一般是 PHP-FPM。Apache 同样可以通过 FastCGI 使用 PHP-FPM,或者用 Apache 模块来运行 PHP。

一旦 PHP 开始执行 WordPress,插件代码、数据库查询、对象缓存或页面缓存,以及 PHP worker 的数量,往往比前面的 Web 服务器更能左右结果。如果某个插件每个请求都要跑十几条昂贵的数据库查询,把 Apache 换成 NGINX 也解决不了根本问题。

Apache 与 NGINX:HTTP/3 与 QUIC 支持

HTTP/3 是该协议的当前版本,它运行在 QUIC 而不是 TCP 之上。你的站点能否提供它,取决于前面那台 Web 服务器,而这也是本次比较中两者差距最明显的一项。

NGINX 从 1.25.0 版本起就带有 HTTP/3 模块。该模块默认不编译,构建时需要 --with-http_v3_module 参数。

NGINX 的 HTTP/3 模块文档 至今仍把该模块标注为"experimental, caveat emptor applies"。

Apache 2.4 没有内置的 HTTP/3 或 QUIC 模块,它自带的协议支持止步于 mod_http2。

对站点所有者来说,实际结论是:标准的 Apache 2.4 安装不提供 HTTP/3。在生产环境中,可行的做法仍然是在 Apache 前面用支持 HTTP/3 的反向代理或 CDN 来终结 HTTP/3。如果你想要这个协议,一个办法是把 NGINX 放在 Apache 前面,由 NGINX 来终结客户端连接,也就是下文要讲的那种架构。

Apache 与 NGINX:安全性

Apache 和 NGINX 都谈不上绝对"更安全"。两者都是维护活跃、安全响应及时的成熟项目,而生产环境的安全性更多取决于补丁、启用了哪些模块、TLS 配置、访问控制、限流,以及服务器背后的应用本身。

有意义的比较是攻击面和配置,而不是评出一个总冠军。关掉你用不到的模块和端点,保持服务器打好补丁,并加固它后面的 WordPress 技术栈。

Apache 与 NGINX:配置

Apache 的按目录生效的 .htaccess 文件 只要 AllowOverride 允许就能生效。这对 WordPress 很方便,因为改重写规则不必去动服务器的全局配置。

这份便利是有代价的。 Apache 自己的官方文档 建议在你拥有 root 权限时把规则写进服务器主配置:.htaccess 文件会在处理请求时被读取,启用它同时带来性能和安全上的考量。

NGINX 没有 .htaccess 的对应物。它的配置是集中式的,因此 WordPress 无法替你写入服务器层面的重写规则。固定链接规则和插件所需的服务器指令,必须由管理员加进 NGINX 配置再重新加载。

Apache 与 NGINX:模块与可扩展性

Apache 对动态共享对象(DSO)的支持很成熟:模块可以单独编译,再通过 LoadModule 加载。NGINX 同样支持用 load_module 动态加载模块,但一旦你用上非标准的第三方模块,与已安装 NGINX 版本及其编译配置的二进制兼容性就更加要紧。

所以,如果你依赖不常见的第三方模块,Apache 更占优。但对主流的 WordPress 托管来说,这个差别通常不如 .htaccess、PHP 的处理方式和你现有的工具链重要。

Apache 与 NGINX:平台支持

Apache 可以运行在 Linux、Windows、macOS 以及许多类 Unix 系统上。NGINX 同样覆盖主流平台,但它的原生 Windows 构建有明显限制。NGINX 至今仍把 Windows 版本标为 beta,说明不应指望高性能和横向扩展,指出实际只有一个 worker 在干活,并且不支持 UDP 和 QUIC。生产环境部署 NGINX,类 Unix 操作系统才是务实的选择。

Apache 与 NGINX:请求处理

Apache 通常把请求的 URL 映射到 DocumentRoot 之下的文件系统,同时它的配置体系也能应用基于 URI 的 location、重写和代理规则。NGINX 则先选定一个 server 块,再选一个 location 块,主要依据请求 URI,然后才决定是自己返回文件还是把请求转给上游。

这个差别会影响你怎么写配置,但它本身并不能证明 NGINX 传输数据更快。

NGINX 与 Apache 快速对比

下面按上面提到的各个维度把两台服务器摆在一起,再加上协议支持和各自的当前版本。

评估项ApacheNGINX
连接架构取决于 MPM:prefork、worker 或 event事件驱动的 worker 进程
高并发与静态负载使用 event MPM 时不落下风;开销取决于负载类型单连接开销通常更低
WordPress 的 PHP搭配 PHP-FPM 的 FastCGI,或 Apache 模块FastCGI,一般是 PHP-FPM
.htaccess支持,只要 AllowOverride 允许没有对应机制
动态模块成熟的 DSO 支持支持,但二进制兼容性很关键
HTTP/3没有原生或自带支持自 1.25.0 起提供的实验性模块
Windows支持的原生构建仍是 beta,功能受限
当前版本2.4.68Stable 1.30.x; mainline 1.31.x

同时使用 Apache 和 NGINX

NGINX 置于 Apache 之前的示意图:浏览器通过 TLS、HTTP/2 或 HTTP/3 连接到前端 Web 层,该层直接返回静态文件、CSS、JavaScript、图片和已缓存内容,其余请求全部转发给后端 Web 层,那里运行着 .htaccess 规则、PHP、WordPress 和数据库

可以,两者能同时运行。常见的混合布局是把 NGINX 放在最前面充当面向客户端的反向代理,Apache 放在后面。NGINX 可以终结 TLS 和 HTTP/2;只要编译并启用了实验性的 HTTP/3 模块,它也能终结 HTTP/3。它还可以自己提供部分静态文件,同时把应用请求转发给 Apache。

关键的注意事项是规则归谁管。NGINX 直接处理掉的请求根本到不了 Apache,因此 Apache 的 .htaccess 规则对它不生效。两份配置必须在重写、缓存、客户端 IP 透传、TLS 行为以及哪条路径归哪台服务器这些方面保持一致。

代价是你现在要维护两台 Web 服务器。两份必须彼此吻合的配置、两条要跟进的更新线,以及请求返回意外结果时多出来的一个排查点。对一个小站点来说,这份额外负担通常盖过收益;只有当你既想要 HTTP/3 或更快的静态分发,又不愿放弃插件所依赖的 .htaccess 行为时,它才开始划算。

NGINX 比 Apache 更简单吗?

两者都谈不上普遍更容易。如果你偏好一份集中式配置,也不怕自己写 server 块,那 NGINX 更容易。如果 WordPress 或第三方插件本来就指望 .htaccess 规则,那 Apache 更容易,因为这些规则能在目录一级生效,不必改动服务器的全局配置。

在你自己掌控的服务器上,所谓"更容易",主要取决于你现有的技术栈本来就指望哪种配置模型。

什么时候该选 Apache 而不是 NGINX?

如果你的 WordPress 技术栈依赖 .htaccess、插件或控制面板工具指望 Apache 的重写指令,或者你需要某个特定的 Apache 模块,那就选 Apache。对一个已经跑得不错的老站点,继续用 Apache 也很合理:仅仅为了跑分上的理论收益就更换 Web 服务器,通常抵不上折腾的代价。

什么时候该选 NGINX 而不是 Apache?

如果你预期会有大量并发连接、想要一个强力的静态文件或反向代理层、偏好集中式配置,或者希望保留启用 HTTP/3 的选项,就选 NGINX。对 WordPress 而言,代价是重写规则和插件特有的服务器指令变成了管理员的活儿,而不再是 WordPress 能自己写进 .htaccess 的东西。

NGINX vs Apache:哪个网络服务器最适合 WordPress?

跑 NGINX。对于放在你自己掌控的服务器上的 WordPress 站点,它是更好的默认选择:高并发下单连接开销低、静态文件分发高效,需要时还能用上 HTTP/3。

例外是 .htaccess,而且这个例外分量不轻。启用 .htaccess 时,WordPress 能自己写入 Apache 的重写规则,但它改不了 NGINX 的服务器配置。如果某个插件需要重写、安全或缓存指令,你就得照它给出的 NGINX 说明,或在 server 块里写一条等效规则,然后重新加载 NGINX。如果你不想承担这份运维责任,Apache 对 WordPress 来说是更省心的选择。在流量正常的站点上,更可能拖慢性能的是 PHP、数据库和缓存策略,而不是 Web 服务器本身。

这一切背后有一个前提:服务器得是你的,你能改。用托管型 WordPress 主机时,用哪个 Web 服务器是服务商说了算,这个问题的答案无非就是他们已经在跑的那个。这篇比较是写给在自己机器上拥有 root 权限的人的。

获取 WordPress VPS

即时部署,启动速度更快的 WordPress VPS。

获取 WordPress VPS

怎么确认自己跑的是 Apache 还是 NGINX?

如果这是你自己的 VPS,直接查看正在运行的服务:

systemctl status nginx
systemctl status apache2   # Debian/Ubuntu
systemctl status httpd     # RHEL/Fedora-family systems

对于你管不着的别人的网站,HTTP 响应里的 Server 头可以作为线索,但并不确凿。反向代理或 CDN 可能亮出自己的服务器软件而不是源站的,而且这个头也可以被隐藏或改写。

在 VPS 上部署 Apache 或 NGINX

如果 VPS 是你的,这两台服务器跑起来都不难。选配机器时要按整个 WordPress 技术栈来算,而不只是看 Apache 或 NGINX:PHP worker、数据库、缓存、流量和后台任务通常比 Web 服务器本身更吃资源。

无论选哪台服务器,配置、更新、TLS、备份和监控都归你负责。两台一起跑,就多了一份配置和一条更新路径,所以只有在有明确理由时才采用混合方案。

Cloudzy 的 NGINX VPS 是一台自管的 Linux VPS,拥有完整 root 权限,服务器配置始终掌握在你自己手里。

我们市场里的 Apache HTTP Server 镜像 同样是一键安装,所以无论要立起其中一台还是两台服务器,都不必从源码编译开始。

常见问题

Apache 比 NGINX 更好吗?

两者都谈不上普遍更好。如果你在意高并发、静态文件分发、反向代理或 HTTP/3,NGINX 通常是更稳的默认选择。如果你的 WordPress 技术栈依赖 .htaccess 或 Apache 专有模块,Apache 通常更省事。

为什么 NGINX 比 Apache 快?

NGINX 能在每个 worker 的事件循环内处理大量连接,因此高并发下单连接开销很低。Apache 的 event MPM 同样以异步方式处理连接,所以差距比 prefork 时代的老比较所暗示的要小。在 WordPress 上,PHP、数据库查询和缓存的影响,往往比两台 Web 服务器之间的差别更大。

WordPress 该用 Apache 还是 NGINX?

对于自管的 WordPress VPS,如果你不介意亲自维护 server 块里的规则,NGINX 是很稳的默认选择。如果你依赖 .htaccess,或者用的插件本来就指望 Apache 的重写规则,并且希望它们少折腾服务器配置就能生效,那就选 Apache。

为什么现在还有人用 Apache?

Apache 至今仍被广泛使用,靠的是它的模块生态、对 .htaccess 的支持、成熟的工具链、广泛的平台支持,以及与围绕它构建的主机和控制面板工作流的兼容性。

Apache 和 apache2 有什么区别?

在 Debian 和 Ubuntu 上,apache2 是 Apache HTTP Server 的软件包名和服务名。RHEL、Fedora 一系的系统通常把这个服务叫作 httpd。它们不是两个不同的 Web 服务器,指的都是 Apache HTTP Server。Apache 当前的稳定分支是 2.4,最新版本为 2.4.68。

Apache 支持 HTTP/3 吗?

原生不支持。Apache HTTP Server 2.4 不自带 HTTP/3 或 QUIC 模块,随附的协议支持止步于 HTTP/2。如果生产环境需要 HTTP/3,可以在 Apache 前面用支持 HTTP/3 的反向代理或 CDN 来终结它。

分享

讨论

评论

登录后参与讨论。

博客更多内容

继续阅读。

准备好部署了吗? 起价 $2.48/月。

独立云厂商,自 2008 年起。AMD EPYC、NVMe、40 Gbps。14 天退款保证。