Apache 清漆和摘要身份验证导致uri不匹配

Apache 清漆和摘要身份验证导致uri不匹配,apache,varnish,digest-authentication,http-status-code-400,Apache,Varnish,Digest Authentication,Http Status Code 400,我在同一个虚拟服务器上设置了一个实时网站和临时版本。实时站点使用Varnish而不使用身份验证,临时站点绕过Varnish而使用摘要身份验证。在我的VCL文件中,我有以下内容: sub vcl_recv { if (req.http.Authorization || req.http.Authenticate) { return(pass); } if (req.http.host != "live.site.com") { return

我在同一个虚拟服务器上设置了一个实时网站和临时版本。实时站点使用Varnish而不使用身份验证,临时站点绕过Varnish而使用摘要身份验证。在我的VCL文件中,我有以下内容:

sub vcl_recv {
    if (req.http.Authorization || req.http.Authenticate) {
        return(pass);
    }

    if (req.http.host != "live.site.com") {
        return(pass);
    }
我在登台站点上看到了一个问题,即没有提供任何查询字符串的资源-在Firebug中,我看到“400错误请求”,在Apache日志中:

[Fri Sep 19 11:13:03 2014] [error] [client 127.0.0.1] Digest: uri mismatch - 
    </wp-content/plugins/jetpack/modules/wpgroho.js?ver=3.9.2> does not match 
    request-uri </wp-content/plugins/jetpack/modules/wpgroho.js>, referer: 
    http://stage.site.com/
我做错了什么,有人知道怎么解决吗

谢谢


托比

好的,找到了,以下是我的发现,以防它对其他人有帮助:

当然,我的Varnish VCL中有一个部分可以从静态文件中删除查询字符串,以帮助缓存:

if (req.request ~ "^(GET|HEAD)$" && req.url ~ "\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)(\?.*)?$") {
    if (req.url ~ "nocache") {
        return(pass);
    }
    set req.url = regsub(req.url, "\?.*$", "");
    unset req.http.Cookie;
    set req.grace = 2m;
    return(lookup);
}
这显然与摘要身份验证冲突,因此我将不得不重新讨论VCL的这一部分

更新我刚刚将第二个条件更改为:

    if (req.http.Authorization || req.http.Authenticate || 
        req.url ~ "nocache") {
        return(pass);
    }