源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

varnish 配置文件分享(sens杨 注释)

  • 时间:2021-01-06 10:09 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:varnish 配置文件分享(sens杨 注释)
前言: varnish 为目前新兴起来的软件,由于中文文档比较少,配置文件比较复杂,所以在运用起来也是特别的费劲。一个偶然的机会在一个群里,有位varnish高手( sens杨 )发表了一篇他对varnish配置文件理解的文档。对于学者来说很有价值。所以转载了过来。 原文如下: varnish配置文件原文地址:http://groups.drupal.org/node/63203 注:红色字体是英文的直接翻译,有些地方翻译的不好 绿色部分是一些思考,这个配置对自身的业务配置的很详细,现在对除了cookie和TTL那部分外其他可以理解80%,慢慢学习体会 [list=1] [*]backend default {  [/*] [*]  .host = "127.0.0.1";  [/*] [*]  .port = "8008";  [/*] [*]  .connect_timeout = 600s;  [/*] [*]  .first_byte_timeout = 600s;  [/*] [*]  .between_bytes_timeout = 600s;  [/*] [*]}  [/*] [*]  [/*] [*]backend lighttpd {  [/*] [*]  .host = "127.0.0.1";  [/*] [*]  .port = "81";  [/*] [*]  .connect_timeout = 600s;  [/*] [*]  .first_byte_timeout = 600s;  [/*] [*]  .between_bytes_timeout = 600s;  [/*] [*]}  [/*] [*]  [/*] [*]acl techmission_internal {  [/*] [*]  "localhost";  [/*] [*]  "127.0.0.1";  [/*] [*]}  [/*] [*]sub vcl_recv {  [/*] [*]  // Allow a grace period for offering "stale" data in case backend lags (http://varnish-cache.org/wiki/VCLExampleGrace)  [/*] [*]// 如果backend数据滞后,允许为“过时”数据提供一个宽松期  [/*] [*]  set req.grace = 5m;  [/*] [*]  // block outside world from our test sites  [/*] [*]// 阻止非自己说测试网站(的数据访问)  [/*] [*]  if ((req.http.host ~ "www.domain1.org|www.domain2.org") && !(client.ip ~ techmission_internal) && !(req.url ~ "^/ad|^/files")) {  [/*] [*]    error 403 "Forbidden";  [/*] [*]  }  [/*] [*]  if((req.url ~ "/server-status" || req.url ~ "/whm-server-status") && !(client.ip ~ techmission_internal)) {  [/*] [*]  error 404 "Not Found";  [/*] [*]  }  [/*] [*]  // add ping url to test Varnish status  [/*] [*]// 增加ping URL测试varnish状态(这个功能使用大部分vcl都没配置,可以增加一个监控状态)  [/*] [*]  if (req.request == "GET" && req.url ~ "/varnish-ping") {  [/*] [*]  error 200 "OK";  [/*] [*]  }  [/*] [*]/* Normalize host header to reduce variation in cache */  [/*] [*]// 使host头规范化,以减少在cache中变化(这个为什么会说变化呢?)  [/*] [*]if (req.http.host == "domain.org" && req.url !~ "^/blogs") {  [/*] [*]  set req.http.host = "www.domain.org";  [/*] [*]}  [/*] [*]  [/*] [*]/* Normalize Accept-Encoding to reduce effects of Vary: Accept-Encoding   [/*] [*]   (cf. http://varnish-cache.org/wiki/FAQ/Compression)  [/*] [*]   Also note that Vary: User-Agent is considered harmful   [/*] [*]   (cf. http://www.mail-archive.com/varnish-misc@projects.linpro.no/msg03296.html) */  [/*] [*]//规范化Accept-Encoding以减少Vary:Accept-Encoding影响(cf),也要注意Vary: User-Agent认为是有害的  [/*] [*]  [/*] [*]  if (req.http.Accept-Encoding) {  [/*] [*]//if先判断是否可以存在,是为了缩小处理范围?  [/*] [*]//看到的其他大部分配置直接就下面了,没有先判断Accept-Encoding是否存在,这点可以再考虑考虑  [/*] [*]//现在有req.can_gzip参数了,判断客户端是否接受压缩代码传输  [/*] [*]    if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") {  [/*] [*]      // Don't compress already-compressed files  [/*] [*]      remove req.http.Accept-Encoding;  [/*] [*]    }   [/*] [*]    elsif (req.http.Accept-Encoding ~ "gzip") {  [/*] [*]        set req.http.Accept-Encoding = "gzip";  [/*] [*]    }   [/*] [*]    elsif (req.http.Accept-Encoding ~ "deflate") {  [/*] [*]        set req.http.Accept-Encoding = "deflate";  [/*] [*]    }   [/*] [*]    else {  [/*] [*]      // unknown algorithm  [/*] [*]// 不了解运算  [/*] [*]      remove req.http.Accept-Encoding;  [/*] [*]    }  [/*] [*]  }  [/*] [*]  [/*] [*]  // Remove has_js and Google Analytics __* cookies. Also remove collapsiblock cookies.  [/*] [*]//删除has_js和谷歌统计__*的cookies,同时删除collapsiblock cookies  [/*] [*]  set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(__[a-z]+|__utma_a2a|has_js|collapsiblock)=[^;]*""");  [/*] [*]  // Remove JSESSIONID cookie from ChristianVolunteering.org static files and pages that are same for all users  [/*] [*]//从ChristianVolunteering.org静态文件和网页中删除JSESSIONID cookie,所有的用户是一样(处理)的  [/*] [*]    if (req.http.host ~ "christianvolunteering.org" &&  [/*] [*]         (req.url ~ "^/$" ||  [/*] [*]          req.url ~ "(searchform|advancedsearch|shorttermmissions|recruitvolunteers|volunteergettingstarted|virtualvolunteer|organizationsearch|abs-bible-outreach|ab*ecutive-volunteers|abs-traveling-engagement-center|churchinstructions|sitemap|city|virtual|organizationlistings|orglistings7407|technology|volunteerlistings|forgotpassword|churchvolunteer|churchvolunteering|servicetrip|region|citysitemap|searchformadv|personalitytest|groupvolunteering|disasterreliefvolunteering|disasterrelief|internships|christiangapyear|about|FAQs|bookrecommendations|contact|pressrelease|training|volunteerstart|volunteerstories|articles)\.jsp$" ||  [/*] [*]          req.url ~ "org/org[0-9]+\.jsp$" ||  [/*] [*]          req.url ~ "org/opp[0-9]+\.jsp$" ||  [/*] [*]          req.url ~ "orglistings[0-9]+\.jsp$" ||  [/*] [*]          req.url ~ "org/[^/]+\.jsp$" ||  [/*] [*]          req.url ~ "volunteer/[^/]+\.jsp$")  [/*] [*]        ) {   [/*] [*]    set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(JSESSIONID)=[^;]*""");  [/*] [*]  }  [/*] [*]  // Remove a ";" prefix, if present.  [/*] [*]//如果有”;”前缀,则删除  [/*] [*]  set req.http.Cookie = regsub(req.http.Cookie, "^;\s*""");  [/*] [*]  // Remove empty cookies.  [/*] [*]// 删除空cookies  [/*] [*]  if (req.http.Cookie ~ "^\s*$") {  [/*] [*]    unset req.http.Cookie;  [/*] [*]  }   [/*] [*]  [/*] [*]  // exclude umjobs and gospelpedia test sites  [/*] [*]// 排除umjos和gospelpedia测试站点  [/*] [*]  if (req.http.host ~ "domain1.org" || req.http.host ~ "domain2.org") {  [/*] [*]    return (pass);  [/*] [*]  }  [/*] [*]  [/*] [*]  // exclude the cron and supercron pages  [/*] [*]// 排除cron和supercron网页  [/*] [*]  if (req.url ~ "cron.php") {  [/*] [*]    return (pass);  [/*] [*]  }  [/*] [*]  // exclude dynamic pages (as did Boost)  [/*] [*]// 排除动态网页(也是提高(处理))  [/*] [*]  if (req.http.host ~ "domain.org" && req.url ~ "^/(user/login|user/password|user/register|logout|cart|post-blog|site-feedback|cgi-bin/webscr|redirect-home|cv-enroll|recommended-content|node/8755|node/8830|node/8351|node/8757|node/8831|cart/(.*)|uc_paypal/(.*)|civicrm/(.*)|admin/(.*)|recommended-content/(.*)|comment/reply/(.*)|node/add/(.*))" ) {  [/*] [*]    return (pass);  [/*] [*]  }  [/*] [*]  [/*] [*]  // exclude in case of Referer Theme  [/*] [*]// 排除Referer的一些主题  [/*] [*]  if (req.http.host ~ "domain.org" && req.http.referer ~ "www.christianvolunteering.org|worldvision.christianvolunteering.org|ccda.christianvolunteering.org|www.ccda.org|www.urbanresource.net|mobile.urbanministry.org|www.ministeriourbano.com") {  [/*] [*]    return (pass);  [/*] [*]  }  [/*] [*]  /* Rules to fix Moodle (thanks, gchaix!) */  [/*] [*]// 修复Moodle规则  [/*] [*]   // Cache Moodle theme files  [/*] [*]//缓存Moodle主题文件  [/*] [*]   if (req.url ~ "/pix/.*\.gif$") {  [/*] [*]     return (lookup);  [/*] [*]   }  [/*] [*]  [/*] [*]    // Moodle doesn't like to be cached, passing  [/*] [*]//Moodle主题不能缓存的就pass  [/*] [*]    if (req.http.Cookie ~ "(MoodleSession|MoodleSessionTest)") {  [/*] [*]      return (pass);  [/*] [*]    }  [/*] [*]    if (req.http.host == "www.domain.edu" && req.url ~ "^/courses") {  [/*] [*]      return (pass);  [/*] [*]    }  [/*] [*]    if (req.url ~ "file.php") {  [/*] [*]      return (pass);  [/*] [*]    }  [/*] [*]  [/*] [*]    // WPMU themes are not playing well with static file caching  [/*] [*]//WPMU主题使用静态文件缓存运行的不太好  [/*] [*]    if (req.http.host == "domain.org" && req.url ~ "/blogs/(.*)/wp-content/themes") {  [/*] [*]      return (pass);  [/*] [*]    }  [/*] [*]  /* Rules for static file caching */  [/*] [*]  /* 静态文件缓存规则  [/*] [*]  // static files get served by Lighttpd  [/*] [*]// 使用Lightted服务静态文件  [/*] [*]  if (req.http.host != "server2.techmission.org" && req.url ~ "\.(gif|jpg|swf|css|js|png|jpg|jpeg|gif|png|tiff|tif|svg|swf|ico|doc|ppt|pps|xls|odc|odb|odf|odg|odi|odp|ods|odt|sxc|sxd|sxi|sxw)$") {  [/*] [*]     // Lighttpd does not require cookies  [/*] [*]     unset req.http.Cookie;  [/*] [*]     unset req.http.Authorization;  [/*] [*]     set req.backend = lighttpd;  [/*] [*]  }  [/*] [*]  [/*] [*]  // large media files get piped directly to lighttpd, to avoid overfilling cache  [/*] [*]// 大媒体文件直接使用pipe方式到lightted,避免缓存溢出  [/*] [*]  if (req.url ~ "\.(mp3|mp4|m4a|ogg|mov|avi|wmv)$" && req.url !~ "audio/download") {  [/*] [*]    set req.backend = lighttpd;  [/*] [*]    pipe;  [/*] [*]  }  [/*] [*]  // pipe large media files that come from Drupal, also, but they can't go to lighty  [/*] [*]// pipe从Drupal过来的大媒体文件,同时不去lighty  [/*] [*]  if (req.url ~ "audio/play" || req.url ~ "audio/download") {  [/*] [*]    pipe;  [/*] [*]  }  [/*] [*]  [/*] [*]}  [/*] [*]sub vcl_hash {  [/*] [*]  if (req.http.Cookie) {  [/*] [*]    set req.hash += req.http.Cookie;  [/*] [*]  }  [/*] [*]  /* Have a separate object cache for mobile site based on User-Agent */  [/*] [*]/* 基于User-Agent的移动网站有一个单独的对象缓存  [/*] [*]  if (req.http.host == "www.domain.org" && req.http.User-Agent ~ "(iPhone|iPod)") {  [/*] [*]    set req.hash += "mobile";  [/*] [*]  }  [/*] [*]}  [/*] [*]sub vcl_fetch {  [/*] [*]  // Grace to allow varnish to serve content if backend is lagged  [/*] [*]// 如果backend滞后,允许varnish服务内容有一个缓冲期  [/*] [*]  set obj.grace = 5m;  [/*] [*]  [/*] [*]  // Add line showing what cookie is once stripped by regex in vcl_recv  [/*] [*]//在vcl_recv中通过regex增加展示cookie一次被剥夺的行  [/*] [*]  set obj.http.X-Stripped-Cookie = req.http.Cookie;  [/*] [*]  set obj.http.X-Request-URL = req.url;  [/*] [*]  [/*] [*]  /* removing Set-Cookie headers that prevent caching */  [/*] [*] //删除那些阻止缓存的Set-Cookie头  [/*] [*]  // Don't have cookies on static files (gchaix says may cause loss of session; I haven't observed that)  [/*] [*]    if (req.url ~ "\.(gif|jpg|swf|css|js|png|jpg|jpeg|gif|png|tiff|tif|svg|swf|ico|doc|ppt|pps|xls|odc|odb|odf|odg|odi|odp|ods|odt|sxc|sxd|sxi|sxw)$") {  [/*] [*]    remove obj.http.Set-Cookie;  [/*] [*]  }  [/*] [*]  [/*] [*]  // Don't set session cookie on ChristianVolunteering.org static files or pages that are same for all users  [/*] [*]//对于(头)ChristianVolunteering.org的静态文件和网页,对所有用户不设置session cookie  [/*] [*]    if (req.http.host ~ "christianvolunteering.org" &&  [/*] [*]         (req.url ~ "^/$" ||  [/*] [*]          req.url ~ "(searchform|advancedsearch|shorttermmissions|recruitvolunteers|volunteergettingstarted|virtualvolunteer|organizationsearch|abs-bible-outreach|ab*ecutive-volunteers|abs-traveling-engagement-center|churchinstructions|sitemap|city|virtual|organizationlistings|orglistings7407|technology|volunteerlistings|forgotpassword|churchvolunteer|churchvolunteering|servicetrip|region|citysitemap|searchformadv|personalitytest|groupvolunteering|disasterreliefvolunteering|disasterrelief|internships|christiangapyear|about|FAQs|bookrecommendations|contact|pressrelease|training|volunteerstart|volunteerstories|articles)\.jsp$" ||  [/*] [*]          req.url ~ "org/org[0-9]+\.jsp$" ||  [/*] [*]          req.url ~ "org/opp[0-9]+\.jsp$" ||  [/*] [*]          req.url ~ "orglistings[0-9]+\.jsp$" ||  [/*] [*]  req.url ~ "org/[^/]+\.jsp$" ||  [/*] [*]          req.url ~ "volunteer/[^/]+\.jsp$")  [/*] [*]        ) {     [/*] [*]    set obj.http.Set-Cookie = regsuball(req.http.Cookie, "(^|;\s*)(JSESSIONID)=[^;]*""");  [/*] [*]    // Remove empty set-cookie.  [/*] [*]    if (obj.http.Set-Cookie ~ "^\s*$") {  [/*] [*]      unset obj.http.Set-Cookie;  [/*] [*]    }  [/*] [*]  }  [/*] [*]  [/*] [*]/* ttl extensions */  [/*] [*]/* ttl 扩展 */  [/*] [*]// If on www.urbanministry.org or static.urbanministry.org, extend TTL by default (pt. 1)  [/*] [*]//对于www.urbanministry.org或static.urbanministry.org,默认情况下扩展TTL  [/*] [*]  if (req.http.host == "www.domain.org" || req.http.host == "static.domain.org") {  [/*] [*]    set obj.http.X-TTL-Extend = "YES";  [/*] [*]  }  [/*] [*]  [/*] [*]  // If on cityvision.edu, but not in Moodle, or if on blazinggrace.org, but not in forums, or if on techmission.org, change obj.ttl  [/*] [*]//如果主机头是cityvision.edu但是不在Moodle中,或者主机头是blazinggrace.org,但不在forums中,或者主机头是techmission.org,更改obj.ttl  [/*] [*]  if ((req.http.host ~ "domain.edu" && req.url !~ "/courses") || (req.http.host ~ "blazinggrace.org" && req.url !~ "/forums")  || (req.http.host ~ "techmission.org")) {  [/*] [*]   set obj.ttl = 7d;  [/*] [*]   set obj.http.X-Extended-TTL = "7d";  [/*] [*]}  [/*] [*]  [/*] [*]if (obj.status == 404) {   [/*] [*]   set obj.ttl = 1s;   [/*] [*]if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  [/*] [*]}   [/*] [*]  [/*] [*]  /* debugging of why a page was not cacheable */  [/*] [*]/* debug为什么页面没有缓存 */  [/*] [*]  if (!obj.cacheable) {  [/*] [*]    set obj.http.X-Cacheable = "NO: Varnish says not cacheable " obj.http.X-Cacheable;  [/*] [*]    if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  [/*] [*]  }  [/*] [*]  [/*] [*]  [/*] [*]  // exclude umjobs and gospelpedia test sites  [/*] [*]// 排除umjobs和gospelpedia测试站点  [/*] [*]  if (req.http.host ~ "domain1.org" || req.http.host ~ "domain2.org") {  [/*] [*]    set obj.http.X-Cacheable = "NO: Test domain " obj.http.X-Cacheable;  [/*] [*]    if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  [/*] [*]  }  [/*] [*]  [/*] [*]  if (obj.http.Set-Cookie) {  [/*] [*]    set obj.http.X-Cacheable = "NO: Set-Cookie " obj.http.X-Cacheable;  [/*] [*]    if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  [/*] [*]  }  [/*] [*]  [/*] [*]  if (req.http.Cookie ~ "DRUPAL_UID|SESS") {  [/*] [*]    set obj.http.X-Cacheable = "NO: Got Session " obj.http.X-Cacheable;  [/*] [*]    if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  [/*] [*]  }  [/*] [*]  [/*] [*]  if (obj.http.Cache-Control ~ "private" || obj.http.Cache-Control ~ "no-cache") {  [/*] [*]    set obj.http.X-Cacheable = "NO: Cache-Control set to not cache " obj.http.X-Cacheable;  [/*] [*]    if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  [/*] [*]  }  [/*] [*]  [/*] [*]  if (req.url ~ "cron.php") {  [/*] [*]    set obj.http.X-Cacheable = "NO: Cron job " obj.http.X-Cacheable;  [/*] [*]    if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  [/*] [*]  }  [/*] [*]  [/*] [*]  if (req.http.host ~ "domain.org" && req.url ~ "^/(user/login|user/password|user/register|logout|cart|post-blog|site-feedback|cgi-bin/webscr|redirect-home|cv-enroll|recommended-content|node/8755|node/8830|node/8351|node/8757|node/8831|cart/(.*)|uc_paypal/(.*)|civicrm/(.*)|admin/(.*)|recommended-content/(.*)|comment/reply/(.*)|node/add/(.*))" ) {  [/*] [*]    set obj.http.X-Cacheable = "NO: Drupal un-cacheable path " obj.http.X-Cacheable;  [/*] [*]    if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  [/*] [*]  }  [/*] [*]  [/*] [*]  if (req.http.host ~ "domain.org" && req.http.referer ~ "www.christianvolunteering.org|worldvision.christianvolunteering.org|ccda.christianvolunteering.org|www.ccda.org|www.urbanresource.net|mobile.urbanministry.org|www.ministeriourbano.com") {  [/*] [*]    set obj.http.X-Cacheable = "NO: Referer Theme " obj.http.X-Cacheable;  [/*] [*]    if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  [/*] [*]  }  [/*] [*]  [/*] [*]  if (req.request == "POST") {  [/*] [*]    set obj.http.X-Cacheable = "NO: POST request " obj.http.X-Cacheable;  [/*] [*]    if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  [/*] [*]  }  [/*] [*]  [/*] [*]  if (req.http.Authorization) {  [/*] [*]    set obj.http.X-Cacheable = "NO: HTTP Authentication " obj.http.X-Cacheable;  [/*] [*]    if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  [/*] [*]  }  [/*] [*]  [/*] [*]  // extend TTL for urbanministry.org objects (but not panels, views, or quicktabs); invalidation thru varnish.module + um_common.module  [/*] [*]//为urbaministry.org对象扩展TTL(不是面板、视图,或者quicktabs);经过varnish.module + um_common.module失效  [/*] [*]  if((req.http.host == "www.domain.org" || req.http.host == "static.domain.org") && obj.http.X-TTL-Extend == "YES" && !obj.http.X-Cache-Type) {  [/*] [*]    set obj.ttl = 7d;  [/*] [*]    set obj.http.X-Extended-TTL = "7d";  [/*] [*]  }  [/*] [*]  [/*] [*]}  [/*] [*]sub vcl_deliver {  [/*] [*]return (deliver);  [/*] [*]  // add cache hit data  [/*] [*]// 增加缓存命中数据  [/*] [*]  if (obj.hits > 0) {  [/*] [*]    // if hit add hit count  [/*] [*]// 如果命中,增加命中数  [/*] [*]    set resp.http.X-Cache = "HIT";  [/*] [*]    set resp.http.X-Cache-Hits = obj.hits;  [/*] [*]    // set resp.http.X-Cache-Served-URL = "SERVED " obj.http.X-Request-URL; // http headers are apparently not accessible in vcl_deliver  [/*] [*]//在vcl_deliver中http头明显不可访问  [/*] [*]    // set resp.http.X-Cache-TTL = obj.ttl; // string representation not implemented yet (currently on 2.0.5)  [/*] [*]  }  [/*] [*]  else {  [/*] [*]    set resp.http.X-Cache = "MISS";  [/*] [*]  }  [/*] [*]}  [/*] [*]/* custom error subroutine - to be a little friendlier to our users */  [/*] [*]//指定error子程序,对用户有好些  [/*] [*]sub vcl_error {  [/*] [*]if(obj.status == 503) {  [/*] [*]    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>  [/*] [*]<p>Sorry we missed you!</p>  [/*] [*]<p>We are currently upgrading our websites to serve you better. We should be up again soon.</p>  [/*] [*]<p>If you still receive this message 30 minutes from now, please email webmaster@techmission.org.</p>  [/*] [*]    <h3>Guru Meditation:</h3>  [/*] [*]    <p>XID: "} req.xid {"</p>  [/*] [*]    <hr>  [/*] [*]    <address>  [/*] [*]       Served by <a href="http://www.varnish-cache.org/">Varnish cache server</a>  [/*] [*]    </address>  [/*] [*]  </body>  [/*] [*]</html>  [/*] [*]"};  [/*] [*]    return (deliver);  [/*] [*]}  [/*] [*]elsif(obj.status == 403) {  [/*] [*]    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>  [/*] [*]<h2>TechMission Developer Access Only</h2>  [/*] [*]<p>This page is only accessible to our staff. Please visit our main websites www.techmission.org,www.urbanministry.org, and " title="www.christianvolunteering.org.  [/*] [*]" style="color: rgb(2, 122, 198); font-weight: bold; text-decoration: none; ">www.christianvolunteering.org.</p>  [/*] [*]<!-- (If you should have access to this page, edit the VCL file to grant yourself access (by adding your current IP to the ACL) and then reload the VCL.) -->  [/*] [*]    <h3>Guru Meditation:</h3>  [/*] [*]    <p>XID: "} req.xid {"</p>  [/*] [*]    <hr>  [/*] [*]    <address>  [/*] [*]       Served by <a href="http://www.varnish-cache.org/">Varnish cache server</a>  [/*] [*]    </address>  [/*] [*]  </body>  [/*] [*]</html>  [/*] [*]"};   [/*] [*]    return (deliver);  [/*] [*]}  [/*] [*]else {  [/*] [*]    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>  [/*] [*]    <address>  [/*] [*]       Served by <a href="http://www.varnish-cache.org/">Varnish cache server</a>  [/*] [*]    </address>  [/*] [*]  </body>  [/*] [*]</html>  [/*] [*]"};   [/*] [*]    return (deliver);  [/*] [*]}  [/*] [*][/*] [/list] 在这里感谢 sens杨 同学对配置文档的解释。 下面编程素材网小编特整理的没有前面数字的文件方法大家使用
backend default { 
 .host = "127.0.0.1"; 
 .port = "8008"; 
 .connect_timeout = 600s; 
 .first_byte_timeout = 600s; 
 .between_bytes_timeout = 600s; 
} 
 
backend lighttpd { 
 .host = "127.0.0.1"; 
 .port = "81"; 
 .connect_timeout = 600s; 
 .first_byte_timeout = 600s; 
 .between_bytes_timeout = 600s; 
} 
 
acl techmission_internal { 
 "localhost"; 
 "127.0.0.1"; 
} 
sub vcl_recv { 
 // Allow a grace period for offering "stale" data in case backend lags (http://varnish-cache.org/wiki/VCLExampleGrace) 
// 如果backend数据滞后,允许为“过时”数据提供一个宽松期 
 set req.grace = 5m; 
 // block outside world from our test sites 
// 阻止非自己说测试网站(的数据访问) 
 if ((req.http.host ~ "www.domain1.org|www.domain2.org") && !(client.ip ~ techmission_internal) && !(req.url ~ "^/ad|^/files")) { 
  error 403 "Forbidden"; 
 } 
 if((req.url ~ "/server-status" || req.url ~ "/whm-server-status") && !(client.ip ~ techmission_internal)) { 
 error 404 "Not Found"; 
 } 
 // add ping url to test Varnish status 
// 增加ping URL测试varnish状态(这个功能使用大部分vcl都没配置,可以增加一个监控状态) 
 if (req.request == "GET" && req.url ~ "/varnish-ping") { 
 error 200 "OK"; 
 } 
/* Normalize host header to reduce variation in cache */ 
// 使host头规范化,以减少在cache中变化(这个为什么会说变化呢?) 
if (req.http.host == "domain.org" && req.url !~ "^/blogs") { 
 set req.http.host = "www.domain.org"; 
} 
 
/* Normalize Accept-Encoding to reduce effects of Vary: Accept-Encoding  
  (cf. http://varnish-cache.org/wiki/FAQ/Compression) 
  Also note that Vary: User-Agent is considered harmful  
  (cf. http://www.mail-archive.com/varnish-misc@projects.linpro.no/msg03296.html) */ 
//规范化Accept-Encoding以减少Vary:Accept-Encoding影响(cf),也要注意Vary: User-Agent认为是有害的 
 
 if (req.http.Accept-Encoding) { 
//if先判断是否可以存在,是为了缩小处理范围? 
//看到的其他大部分配置直接就下面了,没有先判断Accept-Encoding是否存在,这点可以再考虑考虑 
//现在有req.can_gzip参数了,判断客户端是否接受压缩代码传输 
  if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") { 
   // Don't compress already-compressed files 
   remove req.http.Accept-Encoding; 
  }  
  elsif (req.http.Accept-Encoding ~ "gzip") { 
    set req.http.Accept-Encoding = "gzip"; 
  }  
  elsif (req.http.Accept-Encoding ~ "deflate") { 
    set req.http.Accept-Encoding = "deflate"; 
  }  
  else { 
   // unknown algorithm 
// 不了解运算 
   remove req.http.Accept-Encoding; 
  } 
 } 
 
 // Remove has_js and Google Analytics __* cookies. Also remove collapsiblock cookies. 
//删除has_js和谷歌统计__*的cookies,同时删除collapsiblock cookies 
 set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(__[a-z]+|__utma_a2a|has_js|collapsiblock)=[^;]*", ""); 
 // Remove JSESSIONID cookie from ChristianVolunteering.org static files and pages that are same for all users 
//从ChristianVolunteering.org静态文件和网页中删除JSESSIONID cookie,所有的用户是一样(处理)的 
  if (req.http.host ~ "christianvolunteering.org" && 
     (req.url ~ "^/$" || 
     req.url ~ "(searchform|advancedsearch|shorttermmissions|recruitvolunteers|volunteergettingstarted|virtualvolunteer|organizationsearch|abs-bible-outreach|ab*ecutive-volunteers|abs-traveling-engagement-center|churchinstructions|sitemap|city|virtual|organizationlistings|orglistings7407|technology|volunteerlistings|forgotpassword|churchvolunteer|churchvolunteering|servicetrip|region|citysitemap|searchformadv|personalitytest|groupvolunteering|disasterreliefvolunteering|disasterrelief|internships|christiangapyear|about|FAQs|bookrecommendations|contact|pressrelease|training|volunteerstart|volunteerstories|articles)\.jsp$" || 
     req.url ~ "org/org[0-9]+\.jsp$" || 
     req.url ~ "org/opp[0-9]+\.jsp$" || 
     req.url ~ "orglistings[0-9]+\.jsp$" || 
     req.url ~ "org/[^/]+\.jsp$" || 
     req.url ~ "volunteer/[^/]+\.jsp$") 
    ) {  
  set req.http.Cookie = regsuball(req.http.Cookie, "(^|;\s*)(JSESSIONID)=[^;]*", ""); 
 } 
 // Remove a ";" prefix, if present. 
//如果有”;”前缀,则删除 
 set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", ""); 
 // Remove empty cookies. 
// 删除空cookies 
 if (req.http.Cookie ~ "^\s*$") { 
  unset req.http.Cookie; 
 }  
 
 // exclude umjobs and gospelpedia test sites 
// 排除umjos和gospelpedia测试站点 
 if (req.http.host ~ "domain1.org" || req.http.host ~ "domain2.org") { 
  return (pass); 
 } 
 
 // exclude the cron and supercron pages 
// 排除cron和supercron网页 
 if (req.url ~ "cron.php") { 
  return (pass); 
 } 
 // exclude dynamic pages (as did Boost) 
// 排除动态网页(也是提高(处理)) 
 if (req.http.host ~ "domain.org" && req.url ~ "^/(user/login|user/password|user/register|logout|cart|post-blog|site-feedback|cgi-bin/webscr|redirect-home|cv-enroll|recommended-content|node/8755|node/8830|node/8351|node/8757|node/8831|cart/(.*)|uc_paypal/(.*)|civicrm/(.*)|admin/(.*)|recommended-content/(.*)|comment/reply/(.*)|node/add/(.*))" ) { 
  return (pass); 
 } 
 
 // exclude in case of Referer Theme 
// 排除Referer的一些主题 
 if (req.http.host ~ "domain.org" && req.http.referer ~ "www.christianvolunteering.org|worldvision.christianvolunteering.org|ccda.christianvolunteering.org|www.ccda.org|www.urbanresource.net|mobile.urbanministry.org|www.ministeriourbano.com") { 
  return (pass); 
 } 
 /* Rules to fix Moodle (thanks, gchaix!) */ 
// 修复Moodle规则 
  // Cache Moodle theme files 
//缓存Moodle主题文件 
  if (req.url ~ "/pix/.*\.gif$") { 
   return (lookup); 
  } 
 
  // Moodle doesn't like to be cached, passing 
//Moodle主题不能缓存的就pass 
  if (req.http.Cookie ~ "(MoodleSession|MoodleSessionTest)") { 
   return (pass); 
  } 
  if (req.http.host == "www.domain.edu" && req.url ~ "^/courses") { 
   return (pass); 
  } 
  if (req.url ~ "file.php") { 
   return (pass); 
  } 
 
  // WPMU themes are not playing well with static file caching 
//WPMU主题使用静态文件缓存运行的不太好 
  if (req.http.host == "domain.org" && req.url ~ "/blogs/(.*)/wp-content/themes") { 
   return (pass); 
  } 
 /* Rules for static file caching */ 
 /* 静态文件缓存规则 
 // static files get served by Lighttpd 
// 使用Lightted服务静态文件 
 if (req.http.host != "server2.techmission.org" && req.url ~ "\.(gif|jpg|swf|css|js|png|jpg|jpeg|gif|png|tiff|tif|svg|swf|ico|doc|ppt|pps|xls|odc|odb|odf|odg|odi|odp|ods|odt|sxc|sxd|sxi|sxw)$") { 
   // Lighttpd does not require cookies 
   unset req.http.Cookie; 
   unset req.http.Authorization; 
   set req.backend = lighttpd; 
 } 
 
 // large media files get piped directly to lighttpd, to avoid overfilling cache 
// 大媒体文件直接使用pipe方式到lightted,避免缓存溢出 
 if (req.url ~ "\.(mp3|mp4|m4a|ogg|mov|avi|wmv)$" && req.url !~ "audio/download") { 
  set req.backend = lighttpd; 
  pipe; 
 } 
 // pipe large media files that come from Drupal, also, but they can't go to lighty 
// pipe从Drupal过来的大媒体文件,同时不去lighty 
 if (req.url ~ "audio/play" || req.url ~ "audio/download") { 
  pipe; 
 } 
 
} 
sub vcl_hash { 
 if (req.http.Cookie) { 
  set req.hash += req.http.Cookie; 
 } 
 /* Have a separate object cache for mobile site based on User-Agent */ 
/* 基于User-Agent的移动网站有一个单独的对象缓存 
 if (req.http.host == "www.domain.org" && req.http.User-Agent ~ "(iPhone|iPod)") { 
  set req.hash += "mobile"; 
 } 
} 
sub vcl_fetch { 
 // Grace to allow varnish to serve content if backend is lagged 
// 如果backend滞后,允许varnish服务内容有一个缓冲期 
 set obj.grace = 5m; 
 
 // Add line showing what cookie is once stripped by 
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部