我有一个django应用,我想在它前面的服务器上设置Varnish。在另一个serverfault线程中,有人建议将Nginx放在Varnish的前面。
我应该在缓存服务器上将Nginx放在Varnish的前面吗?如果是这样,我应该在应用服务器上使用Nginx吗?
我有一个django应用,我想在它前面的服务器上设置Varnish。在另一个serverfault线程中,有人建议将Nginx放在Varnish的前面。
我应该在缓存服务器上将Nginx放在Varnish的前面吗?如果是这样,我应该在应用服务器上使用Nginx吗?
Answers:
我们总共谈论的是1-3个前端服务器,而不是大型服务器场,各层之间具有负载平衡?
将nginx放在Vanish的前面,使您可以即时进行HTTP压缩。这是一种性能最佳实践,但是可以省去。(Varnish中的内容通常保持未压缩状态,以便ESI包含工作,因此您不必根据Vary标头/浏览器的匹配情况来处理同一对象的多个缓存版本。)
关于应用服务器上的Nginx-是Apache并带有mod_wsgi当今是否不是建议的,最常见的部署新Django安装的方式,将?我不知道在Django的Apache / mod_wsgi上使用nginx / fastcgi的令人信服的理由;但您应该从Django专家那里获得建议。
关于Varnish具有nginx所没有的有吸引力的负载平衡功能,我看不到它们是什么吗?清漆具有随机和循环平衡。nginx具有轮循机制,客户端IP和一致的哈希值-我认为Varnish不会带来明显的好处吗?是VCL还是Varnish的优美配置重新加载还是其他?
对于小型1-3服务器设置,我想我会做
清漆-> Apache / mod_wsgi / Django
或许
鱿鱼-> Apache / mod_wsgi / Django
为简便起见,请忽略HTTP压缩,除非bandband昂贵。
更新:
格雷厄姆·邓普尔顿(Graham Dumpleton)在下面发表了宝贵的评论。他提到了一个非常常见的设置,例如VPS上的博客或没有缓存的小型Web场:
nginx-> Apache / mod_wsgi / Django
这是一个非常好的解决方案,其原因有两个:
我最初没有提到这一点的原因是OP似乎需要Varnish(一种非常高性能的缓存解决方案)。nginx / Apache / mod_wsgi组合无法以与Varnish相匹配的性能和灵活性进行缓存。
我正在成功使用Nginx,Varnish和Apache / mod_wsgi / Django。我从以下配置开始:
Nginx-> Apache / mod_wsgi / Django
一旦开始看到Apache的负载很大,就添加了Varnish:
Nginx->清漆-> Apache / mod_wsgi / Django
我将Nginx用作一种“ URL路由器”。Django管理员请求直接从Nginx发送到Apache。客户端请求从Nginx发送到Varnish,Varnish缓存来自Apache的请求,如果应用程序服务器不可用,它还会从缓存中提供“ graced”项。
我的Nginx服务器还直接提供某些静态内容(例如图像,CSS和javascript文件)。
总的来说,性能非常好。我注意到一些注意事项: