php - Varnish ESI请求-发送了什么Cookie?

标签 php varnish varnish-vcl esi

是新漆,不是HTTP新漆。抱歉,如果这是新手/明显的领域,但Google仍未透露答案。

当 Varnish 向esi include url请求时

  • 默认情况下会发送什么cookie(和其他请求信息)
  • 是否可以通过vcl配置文件以编程方式控制它。

  • 也就是说,据我所知,esi包含在 Varnish 中的要点是允许将有状态信息填充到从缓存中拉出的页面中。应用程序使用 session ID(大概)来获取此有状态信息,该ID通常是通过Cookie中发送的数据来实现的。

    我不清楚的是 Varnish 是否刚刚通过
  • 原始请求的cookie信息
  • 应用程序的响应 cookie
  • 其他的东西

  • 而且,无论默认使用哪种 Varnish ,都可以在vcl文件中对其进行控制吗?

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

    最佳答案

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

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

    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
      }
    }
    

    关于php - Varnish ESI请求-发送了什么Cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30821508/

    相关文章:

    php - 如何将laravel中的多个输入保存到mysql数据库中?

    http - 如何让 Varnish 忽略而不是删除 cookie

    varnish - 如何在varnish中调试VCL?

    对于有效的 URL,Varnish 返回 404

    Varnish 从不发送If-Not-Modified

    varnish - 调试 VCL 文件的最佳方法是什么?

    PHP 添加字符到 jQuery.AJAX 发布的字符串

    php - 带有 SQL 语句的 Foreach 循环

    php - 在 foreach 语句中使用 array_keys() 或设置一个从未使用过的值变量会更快吗?

    apache - 使用 VestaCP 在 Ubuntu 服务器上安装和配置 Varnish 缓存