如果vcl_fetch中的语句不起作用

时间:2014-05-11 12:51:41

标签: c boolean varnish varnish-vcl

仅当网址不像"演示/安全"

时才尝试删除Cookie

在default.vcl中我有:

sub vcl_fetch {
#    error 200 req.url ~ ".*/demo/secured/.*";
    if (req.url ~ ".*/demo/secured/.*") {
      set beresp.http.x-whaaat = "this is demo securd";
    }else {
      unset beresp.http.set-cookie;
      set beresp.http.x-whaaat = "not demo secured";
    }
}

有或没有/ demo / secure的url都会产生" x-whaaat响应标头,而不是演示安全"。但是,对于带有演示/安全的网址,取消注释错误200行会产生错误200,对于没有演示/安全的网址,错误200会错误。

我尝试了if语句的大量和一种变体,但是不能让它返回除false以外的任何内容。

以下是真实的:

if ( "/app_dev.php/demo/secured/login" ~ ".*/demo/secured/.*" )

即使我复制并粘贴了" /app_dev.php/demo/secured/login"从error 200 req.url的页面输出中,以下内容并非如此:

#    error 200 req.url;
    if ( req.url ~ ".*/demo/secured/.*" ) {
      set beresp.http.x-whaaat = "this is demo securd";
    }else {
      unset beresp.http.set-cookie;
      set beresp.http.x-whaaat = "not demo secured";
    }

给了我一个" x-whaat没有演示安全" http://site/app_dev.php/demo/secured/login上的标题不确定这是怎么可能的,因为相同的网址会给我" /app_dev.php/demo/secured/login"取消注释错误200行时。

varnishd -V

给了我:

varnishd (varnish-3.0.5 revision 1a89b1f)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2011 Varnish Software AS

1 个答案:

答案 0 :(得分:0)

我在firebug / chrome开发工具中查看了错误的请求。我正在检查的请求是对mysite.com/app_dev.php/_wdt/60c03d的xhr请求,并且没有/ demo / secure,所以确定它有正确的标题。

现在离开电脑一段时间的时间,明天继续。