【问题标题】:Completely exlude subdomain with Varnish使用 Varnish 完全排除子域
【发布时间】:2016-02-09 09:31:41
【问题描述】:

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

问题: Varnish 可以在除 sqlbuddy 之外的所有站点上完美运行。有时我根本无法访问它并收到错误“错误 503 后端获取失败”。有时我可以访问它,但尝试登录时出现相同的错误。有时我尝试登录时什么也没有发生。有时登录成功,但尝试执行某些操作时出现错误。

我想要/尝试过的: 该站点不需要缓存,因此我希望 Varnish 完全忽略它。

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

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

以及它的不同变体(没有 req.url、return (pipe); 等),但我仍然得到错误。 我也试过把VirtualHost放在不同的端口来绕过Varnish,但似乎sqlbuddy不会听。

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

Varnish 还有其他方法吗?

如果需要更多信息或者我遗漏了一些明显的信息,请告诉我。在 Varnish 方面,我并不是最好的。

【问题讨论】:

  • 当你说“独立”时,这是否意味着它在不同的端口上,或者它是由同一个 apache 实例提供服务的?

标签: caching varnish sqlbuddy


【解决方案1】:

您是否尝试过使用正则表达式匹配而不是 ~

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

甚至

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    相关资源
    最近更新 更多