亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

varnish 配置文件分享(sens楊 注釋)

2024-09-01 13:47:43
字體:
來源:轉載
供稿:網友
varnish 為目前新興起來的軟件,由于中文文檔比較少,配置文件比較復雜,所以在運用起來也是特別的費勁。一個偶然的機會在一個群里,有位varnish高手( sens楊 )發表了一篇他對varnish配置文件理解的文檔。對于學者來說很有價值。所以轉載了過來
 

前言:
varnish 為目前新興起來的軟件,由于中文文檔比較少,配置文件比較復雜,所以在運用起來也是特別的費勁。一個偶然的機會在一個群里,有位varnish高手( sens楊 )發表了一篇他對varnish配置文件理解的文檔。對于學者來說很有價值。所以轉載了過來。

原文如下:

varnish配置文件原文地址:http://groups.drupal.org/node/63203

注:紅色字體是英文的直接翻譯,有些地方翻譯的不好
綠色部分是一些思考,這個配置對自身的業務配置的很詳細,現在對除了cookie和TTL那部分外其他可以理解80%,慢慢學習體會

  1. backend default {  
  2.   .host = "127.0.0.1";  
  3.   .port = "8008";  
  4.   .connect_timeout = 600s;  
  5.   .first_byte_timeout = 600s;  
  6.   .between_bytes_timeout = 600s;  
  7. }  
  8.   
  9. backend lighttpd {  
  10.   .host = "127.0.0.1";  
  11.   .port = "81";  
  12.   .connect_timeout = 600s;  
  13.   .first_byte_timeout = 600s;  
  14.   .between_bytes_timeout = 600s;  
  15. }  
  16.   
  17. acl techmission_internal {  
  18.   "localhost";  
  19.   "127.0.0.1";  
  20. }  
  21. sub vcl_recv {  
  22.   // Allow a grace period for offering "stale" data in case backend lags (http://varnish-cache.org/wiki/VCLExampleGrace)  
  23. // 如果backend數據滯后,允許為“過時”數據提供一個寬松期  
  24.   set req.grace = 5m;  
  25.   // block outside world from our test sites  
  26. // 阻止非自己說測試網站(的數據訪問)  
  27.   if ((req.http.host ~ "www.domain1.org|www.domain2.org") && !(client.ip ~ techmission_internal) && !(req.url ~ "^/ad|^/files")) {  
  28.     error 403 "Forbidden";  
  29.   }  
  30.   if((req.url ~ "/server-status" || req.url ~ "/whm-server-status") && !(client.ip ~ techmission_internal)) {  
  31.   error 404 "Not Found";  
  32.   }  
  33.   // add ping url to test Varnish status  
  34. // 增加ping URL測試varnish狀態(這個功能使用大部分vcl都沒配置,可以增加一個監控狀態)  
  35.   if (req.request == "GET" && req.url ~ "/varnish-ping") {  
  36.   error 200 "OK";  
  37.   }  
  38. /* Normalize host header to reduce variation in cache */  
  39. // 使host頭規范化,以減少在cache中變化(這個為什么會說變化呢?)  
  40. if (req.http.host == "domain.org" && req.url !~ "^/blogs") {  
  41.   set req.http.host = "www.domain.org";  
  42. }  
  43.   
  44. /* Normalize Accept-Encoding to reduce effects of Vary: Accept-Encoding   
  45.    (cf. http://varnish-cache.org/wiki/FAQ/Compression)  
  46.    Also note that Vary: User-Agent is considered harmful   
  47.    (cf. http://www.mail-archive.com/varnish-misc@projects.linpro.no/msg03296.html) */  
  48. //規范化Accept-Encoding以減少Vary:Accept-Encoding影響(cf),也要注意Vary: User-Agent認為是有害的  
  49.   
  50.   if (req.http.Accept-Encoding) {  
  51. //if先判斷是否可以存在,是為了縮小處理范圍?  
  52. //看到的其他大部分配置直接就下面了,沒有先判斷Accept-Encoding是否存在,這點可以再考慮考慮  
  53. //現在有req.can_gzip參數了,判斷客戶端是否接受壓縮代碼傳輸  
  54.     if (req.url ~ "/.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") {  
  55.       // Don't compress already-compressed files  
  56.       remove req.http.Accept-Encoding;  
  57.     }   
  58.     elsif (req.http.Accept-Encoding ~ "gzip") {  
  59.         set req.http.Accept-Encoding = "gzip";  
  60.     }   
  61.     elsif (req.http.Accept-Encoding ~ "deflate") {  
  62.         set req.http.Accept-Encoding = "deflate";  
  63.     }   
  64.     else {  
  65.       // unknown algorithm  
  66. // 不了解運算  
  67.       remove req.http.Accept-Encoding;  
  68.     }  
  69.   }  
  70.   
  71.   // Remove has_js and Google Analytics __* cookies. Also remove collapsiblock cookies.  
  72. //刪除has_js和谷歌統計__*的cookies,同時刪除collapsiblock cookies  
  73.   set req.http.Cookie = regsuball(req.http.Cookie, "(^|;/s*)(__[a-z]+|__utma_a2a|has_js|collapsiblock)=[^;]*""");  
  74.   // Remove JSESSIONID cookie from ChristianVolunteering.org static files and pages that are same for all users  
  75. //從ChristianVolunteering.org靜態文件和網頁中刪除JSESSIONID cookie,所有的用戶是一樣(處理)的  
  76.     if (req.http.host ~ "christianvolunteering.org" &&  
  77.          (req.url ~ "^/$" ||  
  78.           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$" ||  
  79.           req.url ~ "org/org[0-9]+/.jsp$" ||  
  80.           req.url ~ "org/opp[0-9]+/.jsp$" ||  
  81.           req.url ~ "orglistings[0-9]+/.jsp$" ||  
  82.           req.url ~ "org/[^/]+/.jsp$" ||  
  83.           req.url ~ "volunteer/[^/]+/.jsp$")  
  84.         ) {   
  85.     set req.http.Cookie = regsuball(req.http.Cookie, "(^|;/s*)(JSESSIONID)=[^;]*""");  
  86.   }  
  87.   // Remove a ";" prefix, if present.  
  88. //如果有”;”前綴,則刪除  
  89.   set req.http.Cookie = regsub(req.http.Cookie, "^;/s*""");  
  90.   // Remove empty cookies.  
  91. // 刪除空cookies  
  92.   if (req.http.Cookie ~ "^/s*$") {  
  93.     unset req.http.Cookie;  
  94.   }   
  95.   
  96.   // exclude umjobs and gospelpedia test sites  
  97. // 排除umjos和gospelpedia測試站點  
  98.   if (req.http.host ~ "domain1.org" || req.http.host ~ "domain2.org") {  
  99.     return (pass);  
  100.   }  
  101.   
  102.   // exclude the cron and supercron pages  
  103. // 排除cron和supercron網頁  
  104.   if (req.url ~ "cron.php") {  
  105.     return (pass);  
  106.   }  
  107.   // exclude dynamic pages (as did Boost)  
  108. // 排除動態網頁(也是提高(處理))  
  109.   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/(.*))" ) {  
  110.     return (pass);  
  111.   }  
  112.   
  113.   // exclude in case of Referer Theme  
  114. // 排除Referer的一些主題  
  115.   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") {  
  116.     return (pass);  
  117.   }  
  118.   /* Rules to fix Moodle (thanks, gchaix!) */  
  119. // 修復Moodle規則  
  120.    // Cache Moodle theme files  
  121. //緩存Moodle主題文件  
  122.    if (req.url ~ "/pix/.*/.gif$") {  
  123.      return (lookup);  
  124.    }  
  125.   
  126.     // Moodle doesn't like to be cached, passing  
  127. //Moodle主題不能緩存的就pass  
  128.     if (req.http.Cookie ~ "(MoodleSession|MoodleSessionTest)") {  
  129.       return (pass);  
  130.     }  
  131.     if (req.http.host == "www.domain.edu" && req.url ~ "^/courses") {  
  132.       return (pass);  
  133.     }  
  134.     if (req.url ~ "file.php") {  
  135.       return (pass);  
  136.     }  
  137.   
  138.     // WPMU themes are not playing well with static file caching  
  139. //WPMU主題使用靜態文件緩存運行的不太好  
  140.     if (req.http.host == "domain.org" && req.url ~ "/blogs/(.*)/wp-content/themes") {  
  141.       return (pass);  
  142.     }  
  143.   /* Rules for static file caching */  
  144.   /* 靜態文件緩存規則  
  145.   // static files get served by Lighttpd  
  146. // 使用Lightted服務靜態文件  
  147.   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)$") {  
  148.      // Lighttpd does not require cookies  
  149.      unset req.http.Cookie;  
  150.      unset req.http.Authorization;  
  151.      set req.backend = lighttpd;  
  152.   }  
  153.   
  154.   // large media files get piped directly to lighttpd, to avoid overfilling cache  
  155. // 大媒體文件直接使用pipe方式到lightted,避免緩存溢出  
  156.   if (req.url ~ "/.(mp3|mp4|m4a|ogg|mov|avi|wmv)$" && req.url !~ "audio/download") {  
  157.     set req.backend = lighttpd;  
  158.     pipe;  
  159.   }  
  160.   // pipe large media files that come from Drupal, also, but they can't go to lighty  
  161. // pipe從Drupal過來的大媒體文件,同時不去lighty  
  162.   if (req.url ~ "audio/play" || req.url ~ "audio/download") {  
  163.     pipe;  
  164.   }  
  165.   
  166. }  
  167. sub vcl_hash {  
  168.   if (req.http.Cookie) {  
  169.     set req.hash += req.http.Cookie;  
  170.   }  
  171.   /* Have a separate object cache for mobile site based on User-Agent */  
  172. /* 基于User-Agent的移動網站有一個單獨的對象緩存  
  173.   if (req.http.host == "www.domain.org" && req.http.User-Agent ~ "(iPhone|iPod)") {  
  174.     set req.hash += "mobile";  
  175.   }  
  176. }  
  177. sub vcl_fetch {  
  178.   // Grace to allow varnish to serve content if backend is lagged  
  179. // 如果backend滯后,允許varnish服務內容有一個緩沖期  
  180.   set obj.grace = 5m;  
  181.   
  182.   // Add line showing what cookie is once stripped by regex in vcl_recv  
  183. //在vcl_recv中通過regex增加展示cookie一次被剝奪的行  
  184.   set obj.http.X-Stripped-Cookie = req.http.Cookie;  
  185.   set obj.http.X-Request-URL = req.url;  
  186.   
  187.   /* removing Set-Cookie headers that prevent caching */  
  188.  //刪除那些阻止緩存的Set-Cookie頭  
  189.   // Don't have cookies on static files (gchaix says may cause loss of session; I haven't observed that)  
  190.     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)$") {  
  191.     remove obj.http.Set-Cookie;  
  192.   }  
  193.   
  194.   // Don't set session cookie on ChristianVolunteering.org static files or pages that are same for all users  
  195. //對于(頭)ChristianVolunteering.org的靜態文件和網頁,對所有用戶不設置session cookie  
  196.     if (req.http.host ~ "christianvolunteering.org" &&  
  197.          (req.url ~ "^/$" ||  
  198.           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$" ||  
  199.           req.url ~ "org/org[0-9]+/.jsp$" ||  
  200.           req.url ~ "org/opp[0-9]+/.jsp$" ||  
  201.           req.url ~ "orglistings[0-9]+/.jsp$" ||  
  202.   req.url ~ "org/[^/]+/.jsp$" ||  
  203.           req.url ~ "volunteer/[^/]+/.jsp$")  
  204.         ) {     
  205.     set obj.http.Set-Cookie = regsuball(req.http.Cookie, "(^|;/s*)(JSESSIONID)=[^;]*""");  
  206.     // Remove empty set-cookie.  
  207.     if (obj.http.Set-Cookie ~ "^/s*$") {  
  208.       unset obj.http.Set-Cookie;  
  209.     }  
  210.   }  
  211.   
  212. /* ttl extensions */  
  213. /* ttl 擴展 */  
  214. // If on www.urbanministry.org or static.urbanministry.org, extend TTL by default (pt. 1)  
  215. //對于www.urbanministry.org或static.urbanministry.org,默認情況下擴展TTL  
  216.   if (req.http.host == "www.domain.org" || req.http.host == "static.domain.org") {  
  217.     set obj.http.X-TTL-Extend = "YES";  
  218.   }  
  219.   
  220.   // 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  
  221. //如果主機頭是cityvision.edu但是不在Moodle中,或者主機頭是blazinggrace.org,但不在forums中,或者主機頭是techmission.org,更改obj.ttl  
  222.   if ((req.http.host ~ "domain.edu" && req.url !~ "/courses") || (req.http.host ~ "blazinggrace.org" && req.url !~ "/forums")  || (req.http.host ~ "techmission.org")) {  
  223.    set obj.ttl = 7d;  
  224.    set obj.http.X-Extended-TTL = "7d";  
  225. }  
  226.   
  227. if (obj.status == 404) {   
  228.    set obj.ttl = 1s;   
  229. if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  
  230. }   
  231.   
  232.   /* debugging of why a page was not cacheable */  
  233. /* debug為什么頁面沒有緩存 */  
  234.   if (!obj.cacheable) {  
  235.     set obj.http.X-Cacheable = "NO: Varnish says not cacheable " obj.http.X-Cacheable;  
  236.     if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  
  237.   }  
  238.   
  239.   
  240.   // exclude umjobs and gospelpedia test sites  
  241. // 排除umjobs和gospelpedia測試站點  
  242.   if (req.http.host ~ "domain1.org" || req.http.host ~ "domain2.org") {  
  243.     set obj.http.X-Cacheable = "NO: Test domain " obj.http.X-Cacheable;  
  244.     if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  
  245.   }  
  246.   
  247.   if (obj.http.Set-Cookie) {  
  248.     set obj.http.X-Cacheable = "NO: Set-Cookie " obj.http.X-Cacheable;  
  249.     if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  
  250.   }  
  251.   
  252.   if (req.http.Cookie ~ "DRUPAL_UID|SESS") {  
  253.     set obj.http.X-Cacheable = "NO: Got Session " obj.http.X-Cacheable;  
  254.     if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  
  255.   }  
  256.   
  257.   if (obj.http.Cache-Control ~ "private" || obj.http.Cache-Control ~ "no-cache") {  
  258.     set obj.http.X-Cacheable = "NO: Cache-Control set to not cache " obj.http.X-Cacheable;  
  259.     if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  
  260.   }  
  261.   
  262.   if (req.url ~ "cron.php") {  
  263.     set obj.http.X-Cacheable = "NO: Cron job " obj.http.X-Cacheable;  
  264.     if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  
  265.   }  
  266.   
  267.   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/(.*))" ) {  
  268.     set obj.http.X-Cacheable = "NO: Drupal un-cacheable path " obj.http.X-Cacheable;  
  269.     if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  
  270.   }  
  271.   
  272.   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") {  
  273.     set obj.http.X-Cacheable = "NO: Referer Theme " obj.http.X-Cacheable;  
  274.     if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  
  275.   }  
  276.   
  277.   if (req.request == "POST") {  
  278.     set obj.http.X-Cacheable = "NO: POST request " obj.http.X-Cacheable;  
  279.     if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  
  280.   }  
  281.   
  282.   if (req.http.Authorization) {  
  283.     set obj.http.X-Cacheable = "NO: HTTP Authentication " obj.http.X-Cacheable;  
  284.     if (obj.http.X-TTL-Extend) { unset obj.http.X-TTL-Extend; }  
  285.   }  
  286.   
  287.   // extend TTL for urbanministry.org objects (but not panels, views, or quicktabs); invalidation thru varnish.module + um_common.module  
  288. //為urbaministry.org對象擴展TTL(不是面板、視圖,或者quicktabs);經過varnish.module + um_common.module失效  
  289.   if((req.http.host == "www.domain.org" || req.http.host == "static.domain.org") && obj.http.X-TTL-Extend == "YES" && !obj.http.X-Cache-Type) {  
  290.     set obj.ttl = 7d;  
  291.     set obj.http.X-Extended-TTL = "7d";  
  292.   }  
  293.   
  294. }  
  295. sub vcl_deliver {  
  296. return (deliver);  
  297.   // add cache hit data  
  298. // 增加緩存命中數據  
  299.   if (obj.hits > 0) {  
  300.     // if hit add hit count  
  301. // 如果命中,增加命中數  
  302.     set resp.http.X-Cache = "HIT";  
  303.     set resp.http.X-Cache-Hits = obj.hits;  
  304.     // set resp.http.X-Cache-Served-URL = "SERVED " obj.http.X-Request-URL; // http headers are apparently not accessible in vcl_deliver  
  305. //在vcl_deliver中http頭明顯不可訪問  
  306.     // set resp.http.X-Cache-TTL = obj.ttl; // string representation not implemented yet (currently on 2.0.5)  
  307.   }  
  308.   else {  
  309.     set resp.http.X-Cache = "MISS";  
  310.   }  
  311. }  
  312. /* custom error subroutine - to be a little friendlier to our users */  
  313. //指定error子程序,對用戶有好些  
  314. sub vcl_error {  
  315. if(obj.status == 503) {  
  316.     set obj.http.Content-Type = "text/html; charset=utf-8";  
  317.     synthetic {"  
  318. <?xml version="1.0" encoding="utf-8"?>  
  319. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
  320. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  321. <html>  
  322.   <head>  
  323.     <title>"} obj.status " " obj.response {"</title>  
  324. </head>  
  325.   <body>  
  326.     <h1>Error "} obj.status " " obj.response {"</h1>  
  327.     <p>"} obj.response {"</p>  
  328. <p>Sorry we missed you!</p>  
  329. <p>We are currently upgrading our websites to serve you better. We should be up again soon.</p>  
  330. <p>If you still receive this message 30 minutes from now, please email webmaster@techmission.org.</p>  
  331.     <h3>Guru Meditation:</h3>  
  332.     <p>XID: "} req.xid {"</p>  
  333.     <hr>  
  334.     <address>  
  335.        Served by <a href="http://www.varnish-cache.org/">Varnish cache server</a>  
  336.     </address>  
  337.   </body>  
  338. </html>  
  339. "};  
  340.     return (deliver);  
  341. }  
  342. elsif(obj.status == 403) {  
  343.     set obj.http.Content-Type = "text/html; charset=utf-8";  
  344.     synthetic {"  
  345. <?xml version="1.0" encoding="utf-8"?>  
  346. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
  347. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  348. <html>  
  349.   <head>  
  350.     <title>"} obj.status " " obj.response {"</title>  
  351. </head>  
  352.   <body>  
  353.     <h1>Error "} obj.status " " obj.response {"</h1>  
  354.     <p>"} obj.response {"</p>  
  355. <h2>TechMission Developer Access Only</h2>  
  356. <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.  
  357. " style="color: rgb(2, 122, 198); font-weight: bold; text-decoration: none; ">www.christianvolunteering.org.</p>  
  358. <!-- (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.) -->  
  359.     <h3>Guru Meditation:</h3>  
  360.     <p>XID: "} req.xid {"</p>  
  361.     <hr>  
  362.     <address>  
  363.        Served by <a href="http://www.varnish-cache.org/">Varnish cache server</a>  
  364.     </address>  
  365.   </body>  
  366. </html>  
  367. "};   
  368.     return (deliver);  
  369. }  
  370. else {  
  371.     set obj.http.Content-Type = "text/html; charset=utf-8";  
  372.     synthetic {"  
  373. <?xml version="1.0" encoding="utf-8"?>  
  374. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
  375. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
  376. <html>  
  377.   <head>  
  378.     <title>"} obj.status " " obj.response {"</title>  
  379. </head>  
  380.   <body>  
  381.     <h1>Error "} obj.status " " obj.response {"</h1>  
  382.     <p>"} obj.response {"</p>  
  383.     <h3>Guru Meditation:</h3>  
  384.     <p>XID: "} req.xid {"</p>  
  385.     <hr>  
  386.     <address>  
  387.        Served by <a href="http://www.varnish-cache.org/">Varnish cache server</a>  
  388.     </address>  
  389.   </body>  
  390. </html>  
  391. "};   
  392.     return (deliver);  
  393. }  

在這里感謝 sens楊 同學對配置文檔的解釋。

下面VEVB武林網小編特整理的沒有前面數字的文件方法大家使用

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 "  <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); } } 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
毛片精品免费在线观看| 91日本在线观看| 6080yy精品一区二区三区| 青青a在线精品免费观看| 欧美亚洲国产日韩2020| 日韩综合中文字幕| 欧美午夜片在线免费观看| 欧美一级片一区| 亚洲天堂av在线免费观看| 日韩人体视频一二区| 91亚洲精品久久久久久久久久久久| 亚洲a中文字幕| 欧美极品欧美精品欧美视频| 91精品国产自产在线| 国产一区二区三区久久精品| 97免费视频在线播放| 精品国产视频在线| 国产美女精品视频| 欧美专区福利在线| 色噜噜狠狠狠综合曰曰曰88av| 日韩成人xxxx| 性夜试看影院91社区| 欧美在线观看一区二区三区| 欧美精品精品精品精品免费| 美女福利精品视频| 日韩在线观看免费网站| 国产一区玩具在线观看| 精品一区二区三区三区| 欧美精品久久久久久久免费观看| 欧美专区日韩视频| 国产精品日韩一区| 成人啪啪免费看| 在线观看国产精品淫| 欧美激情伊人电影| 浅井舞香一区二区| 中文字幕精品www乱入免费视频| 在线播放精品一区二区三区| 午夜精品一区二区三区在线| 亚洲第一二三四五区| 18性欧美xxxⅹ性满足| 亚洲国产精品成人va在线观看| 日韩欧美在线视频观看| 日韩成人在线视频网站| 亚洲高清在线观看| 久久久久久香蕉网| 欧美精品情趣视频| 亚洲色在线视频| 国产精品欧美激情在线播放| 亚洲影院污污.| 国产精品女人网站| 这里只有精品在线播放| 2021国产精品视频| 不卡在线观看电视剧完整版| 亚洲人成网站777色婷婷| 亚洲精品一区二三区不卡| 成人av资源在线播放| 日本精品一区二区三区在线| 国语自产精品视频在线看抢先版图片| 国产精品视频yy9099| 超薄丝袜一区二区| 亚洲精品一区在线观看香蕉| 91视频国产一区| 美女视频久久黄| 国产美女高潮久久白浆| 国产欧美日韩视频| 成人性生交大片免费看小说| 午夜精品国产精品大乳美女| 久久香蕉频线观| 在线观看亚洲视频| 国产精品视频网址| 精品呦交小u女在线| 日韩国产高清污视频在线观看| 亚洲欧美第一页| 97视频在线播放| 国产精品午夜一区二区欲梦| 欧美成人三级视频网站| 国产97在线亚洲| 久久这里有精品视频| 色播久久人人爽人人爽人人片视av| 欧美裸体xxxx极品少妇| 成人福利在线观看| 久久伊人精品一区二区三区| 久久全国免费视频| 在线成人激情黄色| 草民午夜欧美限制a级福利片| 日本久久久久亚洲中字幕| 色阁综合伊人av| 高清日韩电视剧大全免费播放在线观看| 欧美日韩国产影院| 久久亚洲精品小早川怜子66| 秋霞av国产精品一区| 精品综合久久久久久97| 国产一区欧美二区三区| 成人日韩在线电影| 亚洲va码欧洲m码| 欧美一级淫片丝袜脚交| 国产精品入口免费视频一| 亚洲美女免费精品视频在线观看| 亚洲无线码在线一区观看| 亚洲国产成人精品久久久国产成人一区| 亚洲男人天堂网站| 亚洲女性裸体视频| 日韩av在线影院| 日韩av网址在线观看| 亚洲免费一级电影| 成人国内精品久久久久一区| 久久夜色精品亚洲噜噜国产mv| 成人激情黄色网| 国产在线视频欧美| 这里只有精品在线播放| 91牛牛免费视频| 日韩av在线免播放器| 久久精品国产2020观看福利| 一本色道久久88综合日韩精品| 亚洲欧洲中文天堂| 性欧美暴力猛交69hd| 日韩一区av在线| 少妇激情综合网| 欧美精品电影免费在线观看| 欧美香蕉大胸在线视频观看| 久久成人精品电影| 久久精品影视伊人网| 久久伊人精品天天| 91久久精品久久国产性色也91| 91色视频在线观看| 一区三区二区视频| 欧美日韩在线免费观看| 久久成人在线视频| 久久偷看各类女兵18女厕嘘嘘| 久久精品国产成人精品| 亚洲欧美日韩在线一区| 欧美视频一区二区三区…| 国产精品久久久久7777婷婷| 亚洲二区中文字幕| 911国产网站尤物在线观看| 亚洲第一精品夜夜躁人人爽| www.日韩系列| 疯狂做受xxxx欧美肥白少妇| 一区二区欧美亚洲| 97色在线视频| 成人春色激情网| 亚洲网站在线播放| 日韩最新av在线| 亚洲字幕一区二区| 日韩欧美亚洲范冰冰与中字| 色婷婷av一区二区三区久久| 欧美wwwwww| 日本久久久a级免费| 国产精品免费福利| 97在线精品国自产拍中文| 亚洲精品av在线| 国产精品福利片| 日本不卡免费高清视频| 久久影视电视剧免费网站| 日韩在线视频免费观看高清中文| 91禁外国网站| 日韩福利在线播放| 亚洲色图国产精品| 91在线中文字幕| 欧美体内谢she精2性欧美| 欧美日韩在线观看视频小说| 一区二区三区视频免费| 国产日韩精品综合网站| 最近2019免费中文字幕视频三|