我正在开发一个新项目,将使用 Amazon EC2 进行托管。请求速度至关重要,而 Nginx 的低内存占用非常引人注目。我一直使用 Apache,但如果 Nginx 具有显著优势,那么我想改用它。
我看到很多人使用 Apache + Nginx,但是从 2011 年起,使用 Nginx 和 PHP-FPM 来提供静态和动态内容有什么缺点吗?我知道 .htaccess 不再是 Nginx 的选项,但我也知道有办法解决这个问题。
基本上,您可以从 Apache + Nginx 还是仅从 Nginx 获得最佳性能?
答案1
性能非常相似。在一种情况下,您使用 FastCGI 作为 Nginx 和 PHP 之间的通信层,而在另一种情况下,您使用 Apache + HTTP 作为通信层。最终,当您将 PHP 的开销考虑在内时,FastCGI 和 HTTP 之间的差异不太可能产生任何影响。Apache 将使用一些额外的内存,但由于它将 PHP 嵌入到自己的进程中,因此速度差异很小。
最终,你应该忽略上述内容,除非你真的绝对必须从一台服务器获得最高的性能,因为你被困在一个只有足够一台服务器的电力的位置,从而根本无法扩展。
这里最重要的一点是,您习惯使用什么以及需要什么功能。如果您习惯使用 .htaccess,那么请弄清楚,摆脱 Apache 内存使用、.htaccess 的性能损失以及 PHP-FPM 的新增功能是否值得重新学习这些东西。
可能不太明显,我更喜欢直接使用 Nginx + PHP-FPM,主要是因为它有慢速日志等实用功能,它为我提供了一种额外的方法来确保一切正常。但这确实需要重新学习,.htaccess 不再可用,你无法神奇地将 .htaccess 文件转换为 nginx 格式,因为 nginx 配置有很大不同。
如果你决定使用 Nginx,那么请阅读一下文档。具体来说我的 nginx 入门作为引言,官方英文文档来自 nginx 作者 Igor 以及 wiki 指令地点和try_files。