目前,我们通过Apache和Apache客户服务大部分Rails和LAMP应用程序,但是我们正在考虑添加Nginx或Varnish作为反向代理来减less服务器的负载。
我知道你可以一起使用Varnish和Nginx,但是鉴于在学习两者如何工作方面有时间投入,并且尽可能地保持尽可能低的基础设施中“移动部分”的数量,试图找出使用之间的优点和缺点:
据我所知,nginx速度非常快,而且随着HTTP服务器越来越stream行,它越来越受到人们的关注,所以我可以看到有一段时间来学习这个服务器的工作原理,但是Varnish仍然是一个未知的我。
如果nCache现在在Nginx中,为什么要使用Varnish?
谢谢
您是否期望使用Edge Side Includes(ESI)? 如果是这样的话,Nginx的ESI模块被破坏,并有一些开放的错误。 如果使用Varnish,输出不会被压缩,所以使用Nginx来压缩启用ESI的页面会有些困难。 当我使用Python框架时,Rails是相似的。
使用您当前的设置,您可以执行如下操作:
Nginx – > Apache – > Passenger – > Rails Varnish – > Apache – > Passenger – > Rails
两者都会放在现有系统的前面。 使用Nginx,您也可以直接访问静态文件,并允许它们不必通过Apache进行代理服务。 使用Location指令,您可以切断部分Web空间,并防止必须通过代理。
但是,如果您想完全移植到Nginx,您的基础架构将变为:
nginx – > passenger – > rails(nginx – > uwsgi – > python)
如果你添加清漆,你会得到:
清漆 – > nginx – >乘客 – >铁轨
除非你使用ESI,在这种情况下,你最终会得到:
nginx – > varnish – > nginx – > passenger – > rails
在某种程度上,从混合清除清漆变得相当有趣。 然而,最近的Varnish版本仍然比Nginx的caching更快,而且你对caching的控制很多。 虽然Nginx和Varnish都给了你相当多的控制权,但是Varnish的VCL可以让你编写C代码来完成既不是开箱即可的事情,也不需要触摸守护进程的源代码。 这对你是否有用取决于你。
由于您目前正在使用Apache,除非您要迁移到Nginx并完全删除Apache,否则我会更倾向于将Varnish置于前面。 在你的情况下,光油更多的是一个解决scheme。 如果您决定将来使用ESI,则需要同时运行ESI。
这里是Varnish,Nginx(成长之星),Apache Traffic Server(另一个代理caching),G-WAN(一个带有C脚本的应用服务器)和Lighttpd(一个真正的好的wweb服务器)的比较testing:
http://nbonvin.wordpress.com/2011/03/24/serving-small-static-files-which-server-to-use/
Apache Traffic Server是由Inktomi创build的HTTP代理和caching服务器,在Inktomi被Yahoo收购之前作为商业产品发布。
雅虎表示,它使用TS来每天服务超过300亿个对象。 他们也说TS是“几百个开发年代的产物”。