Nginx 缺少 Apache 的什么功能?

Nginx 缺少 Apache 的什么功能?

据说 Nginx 比 Apache 更节省资源,配置起来也更容易。一位朋友告诉我,“它不能做 Apache 能做的一些事情,但无论如何我都不需要那些事情。”

不过,我很好奇:Apache 可以做哪些 Nginx 不能做的事情?我不需要一份详尽的列表,只需要对哪些场景下 Apache 是更好的选择有一个大致的了解。

答案1

我认为 Nginx 仍缺少的最大部分是完整的 WebDAV 支持。几乎所有其他方面都由核心或第三方模块涵盖。

Nginx 在设计上不支持 mod_php 之类的东西,所以我不确定你是否可以说 Nginx 缺少这些部分。这更像是 Nginx 相当有力地告诉你使用这些东西是愚蠢的。

答案2

Apache 拥有大量可用的模块,可以实现 Nginx 无法实现的一些部署场景。

一个例子是mod_dav_svn通过 HTTP 托管 Subversion。仅有的适用于 Apache。其他值得注意的例子包括mod_perlmod_php。虽然大多数传统设置也可以通过 FCGI(或 WSGI,或 Passenger)完成,但如果您需要在 Web 服务器内实现自定义身份验证方案(就像使用 Redmine/ChiliProject 为 git 或 svn 托管所做的那样),那么在进程内拥有一个实际的解释器会很有帮助。

一般来说,你的朋友是对的:大多数常见的部署场景也可以用 nginx 解决,但如果你必须构建一些更“特殊”的东西,Apache 仍然更灵活。

答案3

这个故事的简短版本是 Apache很多插件和社区围绕它建立。Nginx 出现的时间相对较短,因此它还没有社区代码库。

当人们问我两者有何不同时,Nginx 就像一把牛排刀,用途广泛,而且在某些方面做得非常好。Apache 就像一把瑞士军刀,它拥有大量不同的功能,而且都做得相当好。

答案4

首先,它有许多模块和巨大的安装基础。但这并不是 Apache 的真正你应该关注的是 Apache:它可以更好地提供 PHP、Python、Perl、Java 等动态内容。

当然你也可以用 Nginx 来做到这一点(但在我看来这有点黑客),但在 Apache 上运行的解决方案比在 NginX 上运行的解决方案更加成熟,而且在处理高负载和出色的重写器/反向代理方面也比 Apache 更好。

每项工作都有合适的工具!

相关内容