proxy - 如何在 vcl_recv 中检查后端是否健康

标签 proxy varnish varnish-vcl

我有非常复杂的 Varnish 配置。我不能真正使用导演并手动完成路线。

//webservice1 and webservice2 has probes working there

set req.backend = webservice1;
if (req.backend.healthy)
{ 
     #redirect there 
}

set req.backend = webservice2;
if(req.backend.healthy)
{ 
     #change parameters with regex and redirect
}

这有效。但看起来真的很蹩脚。

是否有任何“合法”的方法来确定后端是否健康?像这样:
if(webservice2.healthy)
{ 
     #change parameters with regex and redirect
}

这显然行不通。

最佳答案

在用谷歌搜索了很多之后,我找到了这个 link ,他们在那里谈论迁移到 V4。

编码 :

if(!req.backend.healthy) {
  #your logic
}

对 Varnish 3 有效,对 Varnish 4 无效。

对于 Varnish 4:

看看这里:
https://www.varnish-cache.org/docs/4.0/users-guide/vcl-grace.html#users-guide-handling-misbehaving-servers

所以解决方案将是:
import std;
set req.backend_hint = webservice1;
if (!std.healthy(req.backend_hint)) {
    set req.backend_hint = webservice2;
}

我希望这对你有帮助:)

关于proxy - 如何在 vcl_recv 中检查后端是否健康,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416415/

相关文章:

java - Glassfish 起始域在 Windows 7 中失败

iphone - 网站在 iPad/iPhone 3G 下显示 JavaScript 错误,但在 WiFi 下不显示

javascript - 浏览 Node.js 服务器时出现 502(代理错误)

proxy - 在 Apache HttpClient 4.1.3 中设置 nonProxyHosts

centos - 坚持配置 Varnish

Varnish 返回(获取/交付)与分块编码

varnish - 如何刷新 firebase 自定义域上的缓存?

caching - Varnish 和 Google Analytics

varnish - 通过 VCL 从 Varnish 发送自定义响应

Varnish ,用于阻止拒绝服务攻击