【问题标题】:Varnish ESI Request -- What Cookie Is Sent?Varnish ESI 请求——发送什么 Cookie?
【发布时间】:2015-08-29 13:14:59
【问题描述】:

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

当 varnish 向 esi include url 发出请求时

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

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

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

我不清楚清漆是否只是通过

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

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

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

【问题讨论】:

    标签: php varnish varnish-vcl esi


    【解决方案1】:

    刚刚进行了一些挖掘,似乎 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
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-02-10
      • 2019-05-19
      • 1970-01-01
      • 2018-11-16
      • 2020-08-19
      • 2021-05-29
      • 2013-07-14
      • 2012-01-19
      相关资源
      最近更新 更多