我们正在尝试使用 Varnish 来缓存我们经常访问的第三方服务的结果。不幸的是,当他们的服务出现故障时,我们的网站几乎变得无法正常工作。
我遇到的问题是我们连接的服务需要 http 身份验证访问我们点击的任何 URL。我希望能够在默认情况下在我的 default.vcl 文件中设置用户名和密码,以便它会自动在每个请求中包含身份验证。
我们正在尝试使用 Varnish 来缓存我们经常访问的第三方服务的结果。不幸的是,当他们的服务出现故障时,我们的网站几乎变得无法正常工作。
我遇到的问题是我们连接的服务需要 http 身份验证访问我们点击的任何 URL。我希望能够在默认情况下在我的 default.vcl 文件中设置用户名和密码,以便它会自动在每个请求中包含身份验证。
所以为了解决这个问题,我修改了 HTTP 标头,如下所示:
sub vcl_recv {
set req.http.Authorization = "Basic d2h5ZGlkeW91OmRlY29kZXRoaXM=";
}
编码部分是您要使用的用户名和密码的 base64:
echo -n "username:password" | base64
您可以在 vcl_miss 和 vcl_pass 中设置后端请求的属性。
对于 HTTP 基本身份验证,您可以执行以下操作:
sub vcl_miss {
if (req.backend == "backend2") {
set bereq.http.Authorization = "Basic <base64string>";
}
}
不支持对后端请求进行 HTTP 摘要身份验证。