一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - 服務器知識 - varnish 配置文件分享(sens楊 注釋)

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

2021-11-02 16:00服務器知識網 服務器知識

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/[email protected].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 [email protected].</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楊 同學對配置文檔的解釋。

下面服務器之家小編特整理的沒有前面數字的文件方法大家使用

?

                1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                17
                18
                19
                20
                21
                22
                23
                24
                25
                26
                27
                28
                29
                30
                31
                32
                33
                34
                35
                36
                37
                38
                39
                40
                41
                42
                43
                44
                45
                46
                47
                48
                49
                50
                51
                52
                53
                54
                55
                56
                57
                58
                59
                60
                61
                62
                63
                64
                65
                66
                67
                68
                69
                70
                71
                72
                73
                74
                75
                76
                77
                78
                79
                80
                81
                82
                83
                84
                85
                86
                87
                88
                89
                90
                91
                92
                93
                94
                95
                96
                97
                98
                99
                100
                101
                102
                103
                104
                105
                106
                107
                108
                109
                110
                111
                112
                113
                114
                115
                116
                117
                118
                119
                120
                121
                122
                123
                124
                125
                126
                127
                128
                129
                130
                131
                132
                133
                134
                135
                136
                137
                138
                139
                140
                141
                142
                143
                144
                145
                146
                147
                148
                149
                150
                151
                152
                153
                154
                155
                156
                157
                158
                159
                160
                161
                162
                163
                164
                165
                166
                167
                168
                169
                170
                171
                172
                173
                174
                175
                176
                177
                178
                179
                180
                181
                182
                183
                184
                185
                186
                187
                188
                189
                190
                191
                192
                193
                194
                195
                196
                197
                198
                199
                200
                201
                202
                203
                204
                205
                206
                207
                208
                209
                210
                211
                212
                213
                214
                215
                216
                217
                218
                219
                220
                221
                222
                223
                224
                225
                226
                227
                228
                229
                230
                231
                232
                233
                234
                235
                236
                237
                238
                239
                240
                241
                242
                243
                244
                245
                246
                247
                248
                249
                250
                251
                252
                253
                254
                255
                256
                257
                258
                259
                260
                261
                262
                263
                264
                265
                266
                267
                268
                269
                270
                271
                272
                273
                274
                275
                276
                277
                278
                279
                280
                281
                282
                283
                284
                285
                286
                287
                288
                289
                290
                291
                292
                293
                294
                295
                296
                297
                298
                299
                300
                301
                302
                303
                304
                305
                306
                307
                308
                309
                310
                311
                312
                313
                314
                315
                316
                317
                318
                319
                320
                321
                322
                323
                324
                325
                326
                327
                328
                329
                330
                331
                332
                333
                334
                335
                336
                337
                338
                339
                340
                341
                342
                343
                344
                345
                346
                347
                348
                349
                350
                351
                352
                353
                354
                355
                356
                357
                358
                359
                360
                361
                362
                363
                364
                365
                366
                367
                368
                369
                370
                371
                372
                373
                374
                375
                376
                377
                378
                379
                380
                381
                382
                383
                384
                385
                386
                387
                388
                389
                390
                391
                392
                393
                394
                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/[email protected]/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 [email protected].</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 " id="codetool">

                延伸 · 閱讀

                精彩推薦
                主站蜘蛛池模板: 好大夫在线个人空间 | 亚洲精品乱码久久久久久蜜桃欧美 | 密臀tv| 久久理论片迅播影院一级 | 久久re视频这里精品一本到99 | gay勾搭直男com | 91私密保健女子养生spa | avtt天堂在线 | 亚洲成色 | 精品国产成人高清在线 | 91成人爽a毛片一区二区 | 免费观看小视频 | 日本高清免费中文字幕不卡 | 国产99在线观看 | 青草青草久热精品视频在线网站 | 免费永久视频 | 国产精品亚洲va在线观看 | 国产一卡二卡3卡4卡四卡在线 | 99视频都是精品热在线播放 | 精品视频免费在线观看 | 好 舒服 好 粗 好硬免费视频 | 日本护士xxxx爽爽爽 | 操熟美女又肥又嫩的骚屁股 | 成人男女啪啪免费观看网站 | 青草青草久热精品视频在线网站 | 国产精品视频一区二区三区不卡 | 大陆男同志gayxxx | 男插女的下面免费视频夜色 | 日韩在线二区全免费 | 午夜桃色剧场 | 网站在线播放 | 婷婷中文 | 亚洲人成影院午夜网站 | 天美视频在线 | 精品在线视频一区 | 日韩精品中文字幕久久 | 亚洲无限观看 | 国产成人小视频在线观看 | 精品国产美女AV久久久久 | 好大好硬视频 | 欧美日韩高清一区 |