【问题标题】:How to exclude virtual host from varnish 3?如何从 varnish 3 中排除虚拟主机?
【发布时间】:2014-05-13 09:26:22
【问题描述】:

我想从 varnish 3 配置中排除单个虚拟主机

缓存:[www].domain.tld

不缓存:host.domain.tld

### default.vcl
backend foo { .host = "domain.tld"; .port = "8880"; }
backend bar { .host = "host.domain.tld"; .port = "8880";}
# ...
if (req.url == "host.domain.tld") { set req.backend = bar; } 
if (req.url == "host.domain.tld") { return(pass); }
if (req.http.Cookie && req.url == "host.domain.tld") { return(pass); }

# ...

### httpd.conf
Listen 8880
<VirtualHost vhost.domain.tld:8880>
    DocumentRoot /var/www/foo/
    ServerName vhost.doman.tld
</VirtualHost>

请求永远不会到达虚拟主机。我想问题是我在端口 80 上请求,而主机在端口 8880 上侦听。
我能做些什么来修复这个?

【问题讨论】:

    标签: apache virtualhost varnish varnish-vcl


    【解决方案1】:

    req.url 不包含域。你想要这样的东西:

    sub vcl_recv {
      if (req.http.host == "host.domain.tld") {
        set req.backend = bar;
        return (pass);
      }
    }
    

    这会将去往域“host.domain.tld”的任何请求的后端设置为“bar”并直接传递到后端(绕过缓存)。

    【讨论】:

      猜你喜欢
      • 2015-01-07
      • 2016-08-31
      • 1970-01-01
      • 2020-07-17
      • 2016-12-10
      • 2012-09-05
      • 2022-07-09
      • 1970-01-01
      • 2021-11-14
      相关资源
      最近更新 更多