前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >●VCL 中文man page(3)

●VCL 中文man page(3)

作者头像
py3study
发布2020-01-14 14:29:45
6310
发布2020-01-14 14:29:45
举报
文章被收录于专栏:python3
代码语言:javascript
复制
 EXAMPLES(例子)
  下面这段代码和默认的配置相同,后端服务器主机名设置为“backend.exampl.com”
 backend default {
  .host = "backend.example.com";
  .port = "http";
 }
 sub vcl_recv {
  if (req.http.x-forwarded-for) {
  set req.http.X-Forwarded-For = req.http.X-Forwarded-For ", " client.ip;
 } else {
  set req.http.X-Forwarded-For = client.ip;
 }
 if (req.request != "GET" &&
 req.request != "HEAD" &&
 req.request != "PUT" &&
 req.request != "POST" &&
 req.request != "TRACE" &&
 req.request != "OPTIONS" &&
 req.request != "DELETE") {
  // Non-RFC2616 or CONNECT which is weird.
  return (pipe);
  }
 if (req.request != "GET" && req.request != "HEAD") {
 // We only deal with GET and HEAD by default
  return (pass);
  }
 if (req.http.Authorization || req.http.Cookie) {
  // Not cacheable by default
  return (pass);
  }
 return (lookup);
 }
 sub vcl_pipe {
  # Note that only the first request to the backend will have
  # X-Forwarded-For set. If you use X-Forwarded-For and want to
  # have it set for all requests, make sure to have:
  # set req.http.connection = "close";
  # here. It is not set by default as it might break some broken web
  # applications, like IIS with NTLM authentication.
  return (pipe);
 }
 sub vcl_pass {
  return (pass);
 }
 sub vcl_hash {
  set req.hash += req.url;
  if (req.http.host) {
  set req.hash += req.http.host;
  } else {
  set req.hash += server.ip;
  }
  return (hash);
 }
 sub vcl_hit {
  if (!obj.cacheable) {
  return (pass);
  }
 return (deliver);
 }
 sub vcl_miss {
  return (fetch);
 }
 sub vcl_fetch {
 if (!beresp.cacheable) {
  return (pass);
 }
 if (beresp.http.Set-Cookie) {
  return (pass);
  }
 return (deliver);
 }
 sub vcl_deliver {
  return (deliver);
 }
 sub vcl_error {
 set obj.http.Content-Type = "text/html; charset=utf-8";
 synthetic {"
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html>
 <head>
 <title>"} obj.status " " obj.response {"</title>
 </head>
 <body>
 <h1>Error "} obj.status " " obj.response {"</h1>
 <p>"} obj.response {"</p>
 <h3>Guru Meditation:</h3>
 <p>XID: "} req.xid {"</p>
 <hr>
 Varnish cache server
 </body>
 </html>
 "};
 return (deliver);
 }
 下面的例子显示一个varnishd实例支持多个独立的站点,基于请求的URL选择使用的后端服务器:
 backend www {
  .host = "www.example.com";
  .port = "80";
 }
 backend p_w_picpaths {
  .host = "p_w_picpaths.example.com";
  .port = "80";
 }
 sub vcl_recv {
  if (req.http.host ~ "^(www.)?example.com$") {
  set req.http.host = "www.example.com";
  set req.backend = www;
  } elsif (req.http.host ~ "^p_w_picpaths.example.com$") {
  set req.backend = p_w_picpaths;
  } else {
  error 404 "Unknown virtual host";
  }
 }
 The following snippet demonstrates how to force a minimum TTL for
 all documents. Note that this is not the same as setting the
 default_ttl run-time parameter, as that only affects document for
 which the backend did not specify a TTL:::
 sub vcl_fetch {
  if (obj.ttl < 120s) {
  set obj.ttl = 120s;
  }
 }
 下面这段代码用来强制缓存带cookies的内容:
 sub vcl_recv {
  if (req.request == "GET" && req.http.cookie) {
  call(lookup);
  }
 }
 sub vcl_fetch {
  if (beresp.http.Set-Cookie) {
  deliver;
  }
 }
 下面代码的作用是利用squid的HTTP PURGE模式清理无法使用的目标。
 acl purge {
  "localhost";
  "192.0.2.1"/24;
 }
 sub vcl_recv {
  if (req.request == "PURGE") {
  if (!client.ip ~ purge) {
  error 405 "Not allowed.";
  }
  lookup;
  }
 }
 sub vcl_hit {
  if (req.request == "PURGE") {
  set obj.ttl = 0s;
  error 200 "Purged.";
  }
 }
 sub vcl_miss {
  if (req.request == "PURGE") {
  error 404 "Not in cache.";
  }
 }
 SEE  ALSO
 Varnishd(1)
 HISTORY
 The VCL language was developed by Poul-Henning Kamp in cooperation with Verdens  Gang AS, Linpro AS and Varnish Software. This manual page was written by Dag-Erling  Smørgrav and later edited by Poul-Henning Kamp and Per Buer.
 COPYRIGHT
 这个文档的版权和varnish自身的版本一样,请看LICENCE。
  * Copyright (c) 2006 Verdens Gang AS
  * Copyright (c) 2006-2008 Linpro AS
  * Copyright (c) 2008-2010 Redpill Linpro AS
  * Copyright (c) 2010 Varnish Software AS
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/07/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档