我正在考虑新的Web服务器的体系结构。将Varnish作为Nginx前面的缓存作为反向代理,并在apache前面为所有繁重的工作提供静态文件是一个好主意吗?
我将在Rails应用程序上运行php和ruby。
将php请求通过其他两个过程传递给apache会产生太多开销吗?
非常感谢!
我正在考虑新的Web服务器的体系结构。将Varnish作为Nginx前面的缓存作为反向代理,并在apache前面为所有繁重的工作提供静态文件是一个好主意吗?
我将在Rails应用程序上运行php和ruby。
将php请求通过其他两个过程传递给apache会产生太多开销吗?
非常感谢!
Answers:
Varnish目前尚不支持gzip压缩,因此最好将其与nginx交换以压缩varnish发送回的内容。由于varnish和nginx不会争用相同的资源(nginx使用CPU进行gzip压缩,而varnish使用内存),它们应该在同一台机器上流畅运行。
Varnish现在支持gzip压缩,因此,除非需要SSL终止(如注释中所建议),否则我建议将varnish直接与Internet联系。
对于http:
(互联网)->(清漆,gzip,缓存,esi)->(应用程序)
对于https:
(互联网)->(nginx,ssl)->(清漆,gzip,缓存,esi)->(应用程序)
如果您也想在其中添加Apache(以获得对mod_foobar的普遍支持),我会将其放在清漆和应用程序之间
更新:更新以在清漆3.0中包括gzip支持。按照评论中的建议添加了ssl / esi
开销的数量应该不大。我假设要拥有这两个层次的部分原因是为了可伸缩性。在这种情况下,相对于apache,您最有可能会看到清漆和nginx并不是很辛苦。
如果将所有三层都放在一台计算机上,则在达到服务器本身的容量之前,对性能的影响应该较小。
作为替代方案,为什么不对乘客涂清漆+ Nginx?我过去使用过这种设置,而使用passenger的nginx相对较轻,并且运行得很好。如果您不结婚使用Apache运行Rails Stack,可能值得考虑。
除非您需要类似ESI的东西,否则这不是一个好主意。Nginx拥有自己的性能更好的缓存系统。
Apache可用于SSL终止(解密),请检查http://noosfero.org/Development/Varnish#SSL