Nginx + php-fpm VS Nginx 作为 Apache 的反向代理

Ans*_*ell 7 nginx reverse-proxy apache-2.2

有人可以启发我将 NginX 作为 Apache 的反向代理有什么好处。人们建议这样做,静态内容由 nginx 处理,动态内容(php 文件)交给 Apache。

  1. 直接让 php-fcgi/php-fpm 处理这些 PHP 文件不是比让 Apache 的 mod_php 处理更合理吗?

  2. 有什么优点(性能方面)

  3. 如果我选择反向代理,我是否需要进行 nginx 重写,或者来自 apache 的 .htaccess 是否可以正常工作?(因为它的反向代理,所以调用被定向到 apache 对吗?)

提前 TY

cyb*_*x86 7

反向代理速度较慢,而且通常更糟,但是,使用它的一些原因是为了保持与 .htaccess 文件的(某些)兼容性(如果您使用纯 nginx 设置,则必须编写(这并不总是实用))或者如果您需要特定的 apache 模块。(有些人可能会争辩说,您有这些要求,使用 apache 更容易。)

  1. 带有 nginx 的 PHP-FPM 将是首选解决方案 - 您可以获得 nginx 的快速静态文件服务和良好的 PHP 性能,而不会增加额外的开销、代理或(通常)大量的 apache 内存使用。
  2. nginx+PHP-FPM(通常)更快并且使用更少的内存。Nginx + Apache + FastCGI/FPM 仍然可以快速提供静态文件,但会在动态文件上产生额外的开销(不如 mod_php,但比消除 apache 更糟糕)。
  3. 您将需要两者兼而有之——nginx 需要知道如何处理路径(例如,用于提供静态文件、拒绝访问 .htaccess 等),而 apache 需要知道如何处理这些文件。在某些情况下,如果您的 .htaccess 文件不属于静态文件(因此每个需要重写的请求都将转到 apache),那么简单地拒绝对某些位置的访问可能是可以接受的,而让 apache 完成其余的工作通过 .htaccess - 它似乎并不理想,会在性能上花费一些,并且其可靠性值得怀疑 - 但它可以在简单的设置下工作)。

如果可以,直接使用 nginx+PHP-FPM 设置。如果不能,尽管反向代理可能有一些优点,请仔细考虑后果,尤其是当您依赖 .htaccess 文件时。