【问题标题】:How to disable varnish cache for wildcard subdomains如何禁用通配符子域的清漆缓存
【发布时间】:2014-08-02 20:50:20
【问题描述】:

我正在尝试为所有子域禁用清漆缓存。我们的应用程序允许用户在我们 url 的子域上创建和管理他们自己的网站,但 varnish 在他们尝试编辑页面时会继续缓存他们的页面。

我知道基本格式:

if (req.url ~ "[code here]") {
    # Don't cache, pass to backend
    return (pass);
}

但我尝试过的任何方法似乎都不适用于所有子域。

也许这是一个简单的正则表达式?

【问题讨论】:

    标签: regex caching varnish wildcard-subdomain varnish-vcl


    【解决方案1】:

    您可以为此目的使用req.http.host。是的,它可以是一个正则表达式。

    sub vcl_recv
    {
       /* your earlier definitions */
       if( req.http.host ~ 'my.subdomain.example.com' )
       {
            // set the backend first
            set req.backend = localhost;
    
            return( pass );
    
        }
    
        /* your definitions  */
     }
    

    在某些情况下,您可能需要return( pipe ):
    https://www.varnish-cache.org/docs/2.1/faq/configuration.html

    【讨论】:

    • 比如?您可以使用req.http.host ~ '.example.com' 来捕获所有子域。或者您需要我们为您做一个捕获子域的正则表达式?
    【解决方案2】:

    我认为任何子域都需要这个(请注意,如果您使用 www,这可能是一个问题,因为它可能被视为子域)并且会匹配 .在 example.com 中

    sub vcl_recv {
          if(req.http.host ~ ".*\.example.com") {      
            return( pass );
        }
    
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 2022-01-03
      • 1970-01-01
      • 2012-04-03
      相关资源
      最近更新 更多