【问题标题】:varnish cookies on uri + domain在 uri + 域上清漆 cookie
【发布时间】:2014-03-14 10:43:00
【问题描述】:

我安装了清漆,为我的缓存内容提供服务 在我的网站上,我有 wordpress 并添加了规则以删除不属于 wp-admin 或 wp-login 的传入和传出 cookie

sub vcl_recv {
        if (!(req.url ~ "wp-(login|admin)")) {
                unset req.http.cookie;
        }
}

sub vcl_fetch {
        if (!(req.url ~ "wp-(login|admin)") {
                unset beresp.http.set-cookie;
        }
}

现在我在需要启用 cookie 的不同域/子域上添加了一些其他站点;我尝试添加规则但没有成功,我解决的唯一方法是不缓存一些域/子域。

我在想类似的东西(recv 和 fetch),但它不起作用,而且它也违反了 wordpress 规则:

sub vcl_fetch {
        if (!(req.url ~ "wp-(login|admin)") || !(req.http.host ~ "ingredienti\.popeating\.it")) {
                unset beresp.http.set-cookie;
        }

}

【问题讨论】:

    标签: caching cookies varnish vcl


    【解决方案1】:

    如果存在大多数 WP 网站或非 WP 网站,正确的方法可能会有所不同。

    鉴于您只有一个 WP 站点且 WP 域是 my.wordpress.tld,您应该将规则更改为:

    sub vcl_recv {
      if ( req.http.host ~ "my.wordpress.tld"
        && ! (req.url ~ "wp-(login|admin)")
      ) {
        unset req.http.cookie;
      }
    }
    #...
    sub vcl_fetch {
      if ( req.http.host ~ "my.wordpress.tld"
        && ! (req.url ~ "wp-(login|admin)")
      ) {
        unset beresp.http.set-cookie;
      }
    }
    

    很容易概括 2+ WP 网站的代码,将 req.http.host ~ "my.wordpress.tld" 替换为 (req.http.host ~ "my1.wordpress.tld" || req.http.host ~ "my2.wordpress.tld") 之类的 or 表达式。

    鉴于您只有一个 NON-WP 站点且 NON-WP 域是 my.not-wordpress.tld,您应该将规则更改为:

    sub vcl_recv {
      if ( ! req.http.host ~ "my.not-wordpress.tld"
        && ! (req.url ~ "wp-(login|admin)")
      ) {
        unset req.http.cookie;
      }
    }
    #...
    sub vcl_fetch {
      if ( ! req.http.host ~ "my.not-wordpress.tld"
        && ! (req.url ~ "wp-(login|admin)")
      ) {
        unset beresp.http.set-cookie;
      }
    }
    

    再次,很容易概括 2+ 非 WP 网站的代码,用类似 (req.http.host ~ "my1.not-wordpress.tld" || req.http.host ~ "my2.not-wordpress.tld") 的 or 表达式替换 req.http.host ~ "my.wordpress.tld"

    注意事项:

    1. 您应该了解 cookie 条带化的含义以及在请求中剥离 cookie 和避免在响应中设置 cookie 之间的区别
    2. 复制粘贴时要小心,因为在vcl_fetchvcl_recv 上获取cookie 的表达方式不同

    【讨论】:

      猜你喜欢
      • 2017-06-10
      • 2012-08-19
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      相关资源
      最近更新 更多