Nginx的清漆Nginx的Django?

我有一个django应用程序,我想在它前面的服务器上设置清漆。 在另一个服务器故障线程中,有人build议把Nginx放在Varnish的前面。

我应该把Nginx放在caching服务器上的Varnish前面吗? 如果是这样,我应该在应用服务器上使用Nginx吗?

    我们总共谈论1 – 3个前端服务器,而不是一个大型的服务器场,层之间有负载平衡?

    把nginx放在Vanish之前,可以让你实时进行HTTP压缩。 这是performance最好的做法,但可以省却。 (Varnish中的内容通常保持未压缩状态,因此ESI包含工作,因此您不必处理同一对象的多个caching版本(取决于Vary头/浏览器匹配)。

    关于应用程序服务器上的nginx – 是mod_wsgi的Apache,而不是现在部署新的Django安装的推荐和最常见的方式? 我没有意识到通过Apache / mod_wsgi为Django使用nginx / fastcgi是一个令人信服的理由; 但你应该从Django专家那里得到build议。

    关于具有nginx没有的有吸引力的负载平衡function的Varnish,我不明白他们是什么? 清漆具有随机和循环平衡。 nginx具有循环法,客户端IP和一致性哈希 – 我没有看到Varnish的重大好处? 是VCL或Varnish的优雅configuration重新加载或其他?

    对于一个小的1-3服务器设置,我想我会做

    Varnish – > Apache / mod_wsgi / Django

    或者可能

    Squid – > Apache / mod_wsgi / Django

    并忽略HTTP压缩为简单起见,除非带宽是昂贵的。

    更新:

    Graham Dumpleton在下面写了一篇有价值的评论。 他提到了一个非常常见的设置,例如VPS上的博客,或者没有caching的小型networking农场:

    nginx – > Apache / mod_wsgi / Django

    这是一个非常好的解决scheme,原因有两个:

    1. 简单的设置
    2. nginx具有很高的速度和最小的开销,可以处理静态文件服务和浏览器连接keepalive。
    3. Django运行在Graham Dumpleton出色的mod_wsgi上,这是Django推荐的平台。

    我之前没有提到的原因是OP似乎需要Varnish,一个非常高性能的caching解决scheme。 nginx / Apache / mod_wsgi组合无法进行caching,其性能和灵活性与Varnish相匹配。

    您可以使用不含清漆的nginx来代理和caching内容。

    我已经成功地使用了Nginx,Varnish和Apache / mod_wsgi / Django。 我开始以下configuration:

     Nginx  - > Apache / mod_wsgi / Django
    

    一旦我开始看到Apache的重大负载,我添加了清漆:

     Nginx  - > Varnish  - > Apache / mod_wsgi / Django
    

    我使用Nginx作为一种“URL路由器”。 Djangopipe理请求直接从Nginx发送到Apache。 客户端请求从Nginx发送到Varnish,caching来自Apache的请求,如果应用程序服务器不可用,还会从caching中提供“放宽”的项目。

    我的Nginx服务器也直接提供某些静态内容(如图片,CSS和JavaScript文件)。

    总的来说,performance非常出色。 我注意到了一些我应该提到的警告:

    1. 在繁忙的网站上,重新启动Varnish可能会导致应用程序服务器上的负载猛增,因此最好将Varnish重新启动至最低限度。 (Varnish似乎没有像Nginx / Apache那样重新读取其VC​​L文件的“重新加载”)。 相反,重新加载Nginxconfiguration影响最小。 出于这个原因,我在Nginx中做了大部分的URL重写和“路由”。
    2. Varnish很容易在Nginx和Apache之间下降。 如果你开始注意到你的应用服务器的高负载,即使默认configuration添加清漆真的可以有所作为。
    3. 如果你使用光油,你一定要考虑如何处理caching失效。
    4. 我的经验是,Varnish处理失败的后端比Nginx更优雅(正如你之前指出的那样)。

    我正在使用Nginx-> Varnish-> uWSGI-> Django