完全用Varnish排除子域名

时间:2016-02-09 09:31:42

标签: caching varnish sqlbuddy

方案: 我有一个Apache / Varnish设置,有许多不同的子域。每个子域在启用站点的情况下都有自己的VirtualHost文件,但都在同一个Wordpress安装中运行。除了一个:sqlbuddy.mydomain.com,它是Sqlbuddy(基于Web的SQL管理)的独立站点。

问题: 除了sqlbuddy之外,所有网站的清漆都能完美运行。有时我根本无法访问它并得到错误“Error 503 Backend fetch failed”。有时候我可以访问它,但是当我尝试登录时会遇到同样的错误。有时当我尝试登录时什么也没发生。有时登录成功但是当我尝试做某事时我收到错误。

我想要/尝试的内容: 这个站点不需要缓存,所以我希望Varnish完全忽略它。

这是我尝试过的(在我的vcl_recv的顶部):

if (req.http.host == "sqlbuddy.mydomain.com" && req.url == "/") {
return (pass);
}

和它的不同变化(没有req.url,返回(管道);等)但我仍然得到错误。 我也尝试将VirtualHost放在另一个端口上以绕过Varnish,但似乎sqlbuddy不会听它。

否则我使用这个VCL: https://gist.github.com/nadirlc/46987b42447cf8e3be79 并且VirtualHosts监听127.0.0.1:8008。

还有其他方法可以用Varnish做到吗?

如果需要更多信息或者我错过了一些明显的信息,请告诉我。对于Varnish来说,我并不是最好的。

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用正则表达式匹配〜

if (req.http.host ~ "sqlbuddy.mydomain.com") {
return (pass);
}

甚至

if (req.http.host ~ "sqlbuddy") {
return (pass);
}