0

清漆的新手,HTTP 的新手。如果这是新手/明显的领域,请道歉,但谷歌搜索并没有透露答案。

当 varnish 向esi include url发出请求时

  1. 它默认发送什么 cookie(和其他请求信息)

  2. 这是否可以通过vcl配置文件以编程方式控制。

那就是 - 我的理解是 esi 包含在清漆中的目的是允许将有状态的信息填充到从缓存中提取的页面中。这个有状态的信息(可能)由应用程序使用会话 id 获取,这通常是通过在 cookie 中发送的数据来实现的。

我不清楚的是,如果清漆只是通过

  • 原始请求的cookie信息
  • 应用程序的响应cookie
  • 别的东西

并且不管默认情况下传递什么清漆,这可以在清漆vcl文件中控制吗?

(一个 PHP 应用程序,如果重要的话)

4

1 回答 1

3

只是做了一些挖掘,似乎 cookie 已传递给 ESI 请求。

ESI 请求也将由 varnish 处理。这允许您再次处理该特定 ESI 对象的所有请求标头和缓存行为。

http://blog.lavoie.sl/2013/08/varnish-esi-and-cookies.html我找到了以下示例。这应该允许您为特定的 esi 请求取消设置/或保留 cookie。

sub vcl_recv {
  if (req.esi_level > 0) {
    # Backend may want to treat this request differently
    set req.http.X-Esi-Level = req.esi_level;

    if (req.url !~ "esi-cookies=1") {
      unset req.http.cookie;
    }
  } else {
    unset req.http.X-Esi-Level; # remove for security
  }
}

sub vcl_fetch {
  # Activate Edge Side Includes, but only if X-Esi header is present
  if (beresp.http.X-Esi) {
    set beresp.do_esi = true;
    unset beresp.http.X-Esi; # remove header
  }
}
于 2015-06-30T14:22:09.867 回答