我有一个VPS与几个网站的设置。 一些网站是WP网站,其中一些是其他dynamic网站。
我有兴趣添加一种反向代理/caching层。 不过,我不想caching所有的网站…
我看到很多人推荐使用清漆。 我在Varnish中发现的问题是需要80端口并caching所有内容。
当我正在寻找解决scheme或避免caching某些网站的方法时,我发现fastcgi_cache。 显然,你可以直接通过Nginxcaching到文件中,然后静态地提供服务。 我也看到了一些可以从Nginxcaching到memcached的地方,但是我现在还不知道。
无论如何,这里是我的select:1.使用Varnish,并以某种方式调整configuration文件传递基于域名的请求。 2.在Nginx上使用fastcgi_cache。 3.使用三明治。 让Nginx监听端口80,为静态文件提供服务,并将所有php文件发送到另一个端口上的Varnish,并将所有未caching的用户传递给另一个Nginx实例。
你觉得我应该怎么做?
谢谢。
您可以通过基于域名的Varnish通过一些请求,这是非常容易的,并且Varnish不会显着减慢您没有caching的网站。
您只需在vcl_recv中添加一些VCL代码,如下所示:
if (req.http.Host == "www.pass_this_thru.com") { return(pass); }
我认为这取决于你期望得到的负载,但是这两个系统select的模型在结构上是不同的。
首先,nginx使用基于事件的模型来处理请求,而Varnish使用基于线程的模型。
清漆将其caching的内容放置在一个非常有效的暴击树中。 我无法findnginx使用的实现。
nginx应该更有效率,因为它使用基于非阻塞事件的模型以尽可能小的争用均匀地传播负载,但是如果从caching中查找时间太慢,您可能会认为它取消了事情。
清漆创build线程池(通常是多个线程,500左右)来处理多处理。 这里的成本是在上下文切换,特别是如果你有很多的请求处理。
我看到它的方式 – 清漆会更好地执行,因为你增加了核心数量,你必须争夺战争,加上其非常好的cachingalgorithm,使得查找和响应速度非常快。 如果你有很多的核心,并有非常高的stream量/内容交付使用清漆。
另一方面,Nginx在pipe理资源方面所采用的方法要less得多,我认为低功耗系统上的小型/中型caching可能会在效率和每秒请求方面获得更好的价值。
总体来说,清漆在一个至less有 2个处理器/内核的专用系统上效果最好。 它会随着添加cpus而线性缩放。
Nginx可能在caching压力不太热的小型multithreading系统上效果最好。 它也将线性扩展,但是我怀疑它的cachingalgorithm和实现不如清漆那样好,最终会成为性能瓶颈,因为你达到了高水平的stream量。
我认为这对你很有趣: testing结果:Nginx&Varnish