清漆:使缓存依赖于X-Forwarded-Proto https

Jos*_*sef 4 caching header http varnish

以下情况:在服务器上是用于缓存的apache和Varnish。SSL由亚马逊负载平衡器处理。如果使用https请求页面,则将HTTP标头“ X-Forwarded-Proto”设置为“ https”。页面有时会有所不同(例如,使用安全连接时必须使用https提取链接/图像)

如果X-Forwarded-Proto标头不同,如何告诉清漆页面不同?现在,首先访问的内容将被缓存并为http和https服务!

NIT*_*MAN 5

我想,您想要的是拥有相同URI的不同缓存版本,使用自定义非常容易vcl_hash

sub vcl_hash {
  # ...
  if (req.http.X-Forwarded-Proto &&
      req.url !~ "(?i)\.(png|gif|jpeg|jpg|ico|gz|tgz|bz2|tbz|mp3|ogg|zip|rar|otf|ttf|eot|woff|svg|pdf)$") {
     hash_data(req.http.X-Forwarded-Proto);
  }
  # ...
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,静态文件仅被缓存一次,其余文件(html,js,css ..)被缓存在2个不同的版本中(假设X-Forwarded-Proto仅采用两个值)。

您可以在https://github.com/NITEMAN/varnish-bites/blob/master/varnish3/drupal-base.vcl的更广泛的上下文中查看示例