Varnish -> Nginx -> Apache 是个好主意吗?

Zor*_*ric 10 nginx varnish architecture apache-2.2

我正在考虑新 Web 服务器的架构。将 Varnish 作为 Nginx 前的缓存作为反向代理,并在 apache 前为所有繁重的工作提供静态文件是一个好主意吗?

我将在 Rails 应用程序上运行 php 和 ruby​​。

通过其他两个进程将 php 请求传递给 apache 会有太多开销吗?

非常感谢!

McJ*_*eff 8

是的,它是有效的。我个人的方法是预先使用 Varnish 并使用 VCL 来分割静态 NGINX 请求和繁重的工作(无论是 Apache 还是Passenger 或......都没有关系)之间的流量。这是尤其如此,如果它在同一台机器上,你不需要额外的开销。它不一定给你买任何东西。


小智 6

Varnish(还)不支持 gzip 压缩,因此将它与前面的 nginx 交换以压缩 varnish 发回的内容可能是一个想法。由于 varnish 和 nginx 不会争夺相同的资源(nginx 使用 CPU 进行 gzip 压缩,而 varnish 使用内存)它们应该在同一台机器上顺利运行。

Varnish 现在支持 gzip 压缩,因此除非您需要 SSL 终止(如评论中所建议),否则我建议将 varnish 直接与 Internet 联系。

对于 http:

(internet) --> (varnish, gzip, caching, esi) --> (application)

对于 https:

(internet) --> (nginx, ssl)--> (varnish, gzip, caching, esi) --> (application)

如果你也想要 apache(为了无处不在的 mod_foobar 支持),我会把它放在 varnish 和应用程序之间

更新:更新为在 varnish 3.0 中包含 gzip 支持。按照评论中的建议添加了 ssl / esi