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

有人可以启发我有Nginx作为Apache的反向代理的优势。 人们提出这样的build议,静态内容由nginx处理,dynamic内容(php文件)被交给Apache。

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

  2. 有什么优点(性能明智)

  3. 如果我select反向代理,我是否需要做一个nginx重写或将Apache的.htaccess的工作,因为它是? (因为它的反向代理,所以这个调用是指向apache的吧?)

TY提前

反向代理比较慢,通常情况下更糟糕,但是,使用它的一些原因是为了保持(某些)与.htaccess文件的兼容性(你必须编写这个文件(这并不总是实用的),你使用的是纯粹的nginx设置)或者如果你需要特定的Apache模块。 (有些人可能会说,你有这些要求,只是使用apache更容易。)

  1. 使用nginx的PHP-FPM将是首选的解决scheme – 您可以获得nginx的快速静态文件服务,并且不会增加额外的开销,代理或者(通常)显着的apache内存使用量。
  2. nginx + PHP-FPM(通常)更快,并使用更less的内存。 Nginx + Apache + FastCGI / FPM仍然可以快速提供静态文件,但是在dynamic文件上会有额外的开销(不像mod_php那么糟糕,但是比消除apache更糟)。
  3. 你将需要一些–Nginx需要知道如何处理path(例如,为静态文件提供服务,拒绝访问.htaccess等),并且需要知道如何处理这些文件。 在某些情况下,如果你的.htaccess文件不属于静态文件(所以每一个需要重写的请求都会去apache),那么简单地拒绝访问某些位置是可以接受的,并且让apache去做其余的通过.htaccess – 这似乎不理想,性能会花费一点,其可靠性是可疑的 – 但它可以在一个简单的设置)。

如果可以的话,直接使用nginx + PHP-FPM设置。 如果不行的话,虽然反向代理可能有一些优点,但请仔细考虑这些影响,尤其是在依赖.htaccess文件的情况下。

我会说这是另一回事:将Apache从混合中切割出来会提高性能。 如果您喜欢Apache提供的某些其他模块,或者您有某些外部原因继续使用Apache来获取dynamic内容,则可以保持Apache的身份。

让Apache处理重写应该没问题,只要你不做任何事情来访问你的静态内容。 但是请确保在你的nginx conf中有一个用于.ht*的排除:不要意外地将这些特定的静态文件提供给公众。