Varnish – > Nginx – > Apache的一个好主意?

我正在考虑一个新的Web服务器的体系结构。 将Varnish作为Nginx之前的caching作为反向代理,并在apache之前为静态文件提供静态文件是一个好主意?

我要在rails应用程序上运行php和ruby。

会有太多的开销通过PHP请求通过其他两个进程的Apache?

非常感谢!

    是的,这是有效的。 我个人的做法是预先使用Varnish并使用VCL将静态的NGINX请求与繁重的工作(无论是Apache还是Passenger或者…无关紧要)之间的stream量进行分割。 如果它在同一台机器上,那么尤其如此,因为您不需要额外的开销。 它不一定会给你买东西。

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

    Varnish现在支持gzip压缩 ,所以除非你需要SSL终止(正如评论中所build议的那样),否则我会build议把油漆直接与互联网联系。

    对于http:

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

    对于https:

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

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

    更新:更新为在清漆3.0中包含gzip支持。 按照注释中的build议添加了ssl / esi

    开销的数额不应该是显着的。 我假设你想要这两层的部分原因是为了可扩展性; 在这种情况下,你很可能会看到,相对于Apache而言,varnish和nginx并不是很努力。

    如果你在一台机器上的所有三层,在达到服务器本身的容量之前,应该有较less的性能影响。

    作为替代,为什么没有清漆+ nginx与乘客? 我过去使用过这个设置,使用乘客的nginx比较轻,而且运行得很好。 可能值得考虑一下,如果你没有嫁给运行你的铁轨堆栈的Apache。

    我是创业电子商务平台的系统pipe理员。 我们在我们的PHP / apache堆栈前面使用了varnish + nginx,它创造了奇迹。

    我们有一个高内存使用的应用程序,应用程序每个webnode使用大约15-20gig的RAM,一旦我们把清漆放在前面,现在每个节点大约有8gig的RAM。 他们从来没有刺。

    所以我强烈推荐它。

    我正在运行Drupal,在Apache + PHP + MySQL服务器上使用boost模块,但在他们面前,我使用的是带有gzip-staticfunction的Nginx,并使用boost的结果来为用户提供服务。

    而在所有我使用清漆,所有在同一台PC上,我有很好的结果。

    我也使用Nginx来调整Drupal对caching不太好的头文件。

    这不是一个好主意,除非你需要像ESI这样的东西。 Nginx拥有自己的caching系统, 性能更好 。

    Apache可以用来终止(解密)SSL,检查http://noosfero.org/Development/Varnish#SSL