Varnish 4 Basic Authentication 不断提示输入用户名和密码

Varnish 4 Basic Authentication constantly prompts for username and password

我在测试环境中使用 Varnish 4,并希望使用基本身份验证来保护对内容的访问。

我想要发生的是第一个请求导致基本身份验证提示,然后在用户输入用户名和密码后不再询问。我已经用 Varnish 设置了一个规则来检查正确的授权并要求用户提供它,如果他们没有。

我的最终用户抱怨他们在浏览器中反复收到基本身份验证详细信息的质询,有时必须输入 20 次才能显示第一页。

使用 Chrome 浏览器时,这似乎不会发生,除非我打开了开发工具面板,并且勾选了打开开发工具面板时不缓存请求。在各种版本的IE中,经常出现这种情况。

在我的 VCL 中,子 vcl_recv 部分中的基本身份验证规则如下所示:

if (!req.http.Authorization ~ "Basic xxxxxxxxxxxxxxxxxx=="
    # Don't require auth if IP on the authpass list.
    && !client.ip ~ authpass
    # Don't require auth if this is the live website.
    && !req.http.Host == "www.mylivesite.com") {
    return(synth(401, "Authentication required"));
}
unset req.http.Authorization;

我认为你在 vcl_synth:

中遗漏了这个
sub vcl_synth {
   if (resp.status == 401) {
   set resp.status = 401;
   set resp.http.WWW-Authenticate = "Basic";
   return(deliver);
}

检查 关于在 Varnish 中设置基本身份验证的回答。