Varnish是否有可能parsing主机名以确定使用哪个后端? 我想避免必须这样做: if (url = 'backend1') { set req.backend = backend1; } ..所有的人。 我希望能够做到这样的事情: set req.backend = regsub(req.http.Host, "^.*([^.]+)\.mydomain\.com$", "\1"); ..但是这不起作用。
在这种情况下,我不了解Varnish的行为: 假设我在一个网站上有一个网页,开始产生500个错误(网站有一个很好的自定义500屏幕,但这不完全相关)。 我在vcl_fetch子例程中有代码: sub vcl_fetch { // Keep stale response for six hours in case backend fails. set beresp.grace = 6h; if (beresp.status == 500) { set beresp.saintmode = 30s; return(restart); } 我曾经希望,在500错误发生的时候,Varnish会提供一个caching版本的页面,延长宽限期。 那不是发生了什么事。 相反,清漆发布自己的500页,然后开始张贴503。 如果我将回报更改为(交付),那么它会从后端传递自定义500页面,但在圣徒模式期间服务它自己的503大师冥想页面。 我想要发生的事情显然是在500年前发布caching版本,除此之外,发送我们自定义的500页,并且永远不会发送503。 在这种情况下,后端仍在报告健康状态,网站上的其他页面仍在服务中。
我得到了间歇性的大师冥想清漆(因为在我发射50个请求和3回来坏)。 在varnishlog它说 15 VCL_return c hash 15 HitPass c 1394372109 15 VCL_call c pass pass 15 Backend c 17 default default 15 TTL c 1394372164 RFC 0 -1 -1 1384590297 0 1384590291 0 0 15 VCL_call c fetch 15 TTL c 1394372164 VCL 120 -1 -1 1384590297 -0 15 VCL_return c hit_for_pass 15 ObjProtocol c […]
我有两个Web网站,我想caching清漆。 我可以使用相同的端口caching他们在相同的清漆? 例如; www.domain1.com:80,www.domain2.com:80
我有一个红帽服务器,红帽企业Linux服务器版本5.2(Tikanga),我试图启动Varnish。 当我尝试开始清漆,我总是得到以下例外, 推送vcls失败:dlopen(./ vcl.1P9zoqAU.so):./vcl.1P9zoqAU.so:无法打开共享对象文件:权限被拒绝 我有另一个相同的服务器,没有这个问题。 我按照http://www.varnish-cache.org/installation/redhat中的说明在红帽服务器上安装了Varnish 是否有一些configuration问题需要调整,以防止这个问题发生? 我最初的调查和想法是,服务器没有足够的磁盘空间,但我相信我已经清理了足够的可用空间。
我试图在Drupal前面configurationVarnish,并且只是运行一些快速的Apache Benchtesting来看看我得到了什么样的改进。 我运行的具体的ab命令是: ab -n 15000 -c 300 -k -H 'Accept-Encoding: gzip,deflate' www.mysite.tld/some-page 一旦我设置的并发性高于300左右,我开始看到一个真正的长尾巴结果: Percentage of the requests served within a certain time (ms) 50% 2 66% 4 75% 4 80% 5 90% 7 95% 19 98% 45 99% 246 100% 5016 (longest request) 随着并发性的增加,这个长尾变得越来越糟糕,但似乎总是发生在95%的连接之后(给予或带走)。 对于与c相同的ab命令,在500: 50% 1 66% 1 75% 1 80% 2 90% […]
我正在使用Varnish 3.0.3 目前我知道如何使用此VCL清除单个URL: if (req.request == "PURGE") { if (!client.ip ~ purge) { error 405 "Not allowed"; } return(lookup); error 200 "Purged"; } 我想发出一个通配符清除,如: PURGE: http://www.mysite.com/images/* 清漆是否支持这个?
我使用Django和Varnish 4。 我试图达到这个目的: 如果请求不是主页,通过(我试图只caching主页,目前来testing它等) 如果cookie“sessionid”存在,则为每个会话传递或caching 别的:通过 这是sub vcl_recv的configuration: # cache only home page if (! req.url == "/") { return(pass); } # not caching if cookie sessionid is present if (req.http.Cookie ~ "sessionid") { return(pass); } unset req.http.cookie; 到目前为止,清漆似乎总是生成一个新的页面,当它调用主页作为匿名。 我可以告诉使用标题清漆发送(“年龄”始终是0和“X-Varnish”总是不同的数字)。 这是要么我的configuration丢失的东西,还是因为Django发送一个“Vary:Cookie”的响应? 如果是这种情况,在这种情况下我怎样才能“隐藏”来自Varnish的Cookie(仅限匿名用户)?
如果底层的后端发生故障,应该返回如下所示的JSON响应。 { "msg" :{ "status": 2 } } 这可能与清漆?
我有一个相对简单的(我认为)用例,但是我找不到任何有人这样做的例子。 我们在两个不同的应用程序之前使用Varnish作为caching和反向代理,并希望在两者之间做一些更统一的事情,因为它们都做类似的事情。 我希望清漆可以帮助重写url如下所示。 分页的原始应用url(获得前10项): //myapplication.com/products/?startindex=1&endindex=10所需url: //myapplication.com/products/?paginate=1:10这只是一个例子(最复杂的是它结合了两个参数),但是在所有情况下,参数的input值保持不变,只是参数名字会改变。 另一个例子是: //myapplication.com/search/?query=something到: //myapplication.com/search/?q=something有没有人有使用清漆的经验,以及如何做到这一点? 谢谢