使用Nginx的Varnish是否比仅使用Nginx更好?[关闭]


22

我看到很多关于将Nginx与Varnish结合使用的讨论,但我不明白为什么。nginx还不够吗?

Nginx具有SSI,具有反向代理缓存,重量轻,具有SSL,可以与cgi,fpm等配合使用。

Varnish具有相同的功能,但没有ssl,也没有cgi支持。


“更好”确实是主观的。这取决于您的用例...
voretaq7 2011年

7
有时候,一个简单的问题比复杂的问题做得更好。我非常关注那些关闭该问题的人们所采取的行动,并认为这对“原始问答格式”不利。我正在寻找这个主题,我很感兴趣看到这场辩论的结果。
罗杰

varnish具有强大的vcl配置,清除,反向代理缓存,ESI nginx可以与FCGI,反向代理缓存,ssi,无清除(可能有模块)一起使用,在性能方面,它们对于静态文件,缓存几乎相同...如果您有任何问题可以帮忙吗
Bogdan Cosmin 2012年

Answers:


14

我发现小型静态文件的清漆比nginx快约5%–在Apache前面的清漆或在Web应用程序服务器前面的清漆将大有收获;但是在nginx面前,好处是微不足道的(尤其是考虑到开销和额外的复杂性)


您能否提供一些测试结果来支持这一点?如果我已经在使用nginx + opcache,该怎么办。那么使用清漆有什么好处吗?
2014年

23

首先,要澄清一下:Nginx是一个Web服务器,具有随之而来的所有功能和复杂性。它还具有缓存功能,但这不是其主要设计目标。

Varnish 不是 Web服务器。它不能扮演那个角色(总之,如果没有真正邪恶的VCL)。它的作用是缓存另一台服务器提供的内容。如果需要,它可以更改请求或响应。

如果nginx可以处理您的流量,那就足够了。如果nginx无法跟上,那么增加容量的一种方法是在其前面放置一个高速缓存,并使该高速缓存处理尽可能多的请求。

举例来说,我们使用Apache从一组Web服务器中运行许多相对复杂的PHP网站。当我们开始遇到容量问题时,我们在Apache集群的前面放置了一对Varnish服务器。Varnish主机现在可以处理所有传入请求的85%,而不会打扰Apache后端。


那么,Varnish缓存PHP生成的动态内容吗?还是其他东西?
Alix Axel

Varnish缓存您告诉缓存的所有内容。它可以仅缓存PHP输出,仅缓存静态文件,或两者都缓存。这是一个非常强大的工具。
Insyte

我在问你的具体例子。这让我感到困惑,如何在不弄乱动态应用程序的情况下缓存动态内容(适用于初学者的PHP会话)。缓存静态内容对我来说似乎有点多余。
Alix Axel 2012年

3
这取决于动态内容。例如,假设该页面是带有评论的博客文章。生成注释线程可能非常昂贵,但将其缓存5分钟则完全可以接受。另一方面,缓存由Webmail应用程序返回的动态内容显然是有问题的。您甚至可以创建混合情况:缓存电子商务应用程序的全部输出,但是告诉varnish回调到后端以填充购物车指示器。
Insyte 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.