{"id":268,"date":"2011-12-10T13:24:23","date_gmt":"2011-12-10T18:24:23","guid":{"rendered":"http:\/\/zhanxw.com\/blog\/?p=268"},"modified":"2011-12-10T13:29:31","modified_gmt":"2011-12-10T18:29:31","slug":"%e4%bd%bf%e7%94%a8varnish%e7%bb%95%e8%bf%87%e5%ad%a6%e6%a0%a1%e9%98%b2%e7%81%ab%e5%a2%99","status":"publish","type":"post","link":"https:\/\/zhanxw.com\/blog\/2011\/12\/%e4%bd%bf%e7%94%a8varnish%e7%bb%95%e8%bf%87%e5%ad%a6%e6%a0%a1%e9%98%b2%e7%81%ab%e5%a2%99\/","title":{"rendered":"\u4f7f\u7528Varnish\u7ed5\u8fc7\u5b66\u6821\u9632\u706b\u5899"},"content":{"rendered":"<p>Use varnish to bypass school proxy (rewrite URL to bypass port blocking).<\/p>\n<p>\u5b66\u6821\u7684\u9632\u706b\u5899\u89c4\u5219\u5f88\u4e25\u683c\uff0c\u9664\u4e8680\uff0c443\u7b49\u5e38\u7528\u7aef\u53e3\u5916\uff0c\u4e0d\u5141\u8bb8\u7279\u6b8a\u7aef\u53e3\u7684\u901a\u4fe1\uff08\u5c31\u8fdegit\u4f7f\u7528\u76849418\u7aef\u53e3\u4e5f\u88abblock\u8fc7\uff09\u3002<br \/>\n\u53ef\u4ee5\u6211\u7684\u7f51\u7ad92812\u7aef\u53e3\u6709monit\u670d\u52a1\uff0c\u6211\u5e38\u5e38\u60f3\u4ece\u5b66\u6821\u7684\u7535\u8111\u8bbf\u95ee <a href=\"http:\/\/zhanxw.com:2812\" title=\"Monit Link\"><\/a>\uff0c\u770b\u770b\u81ea\u5df1\u7f51\u7ad9\u7684\u662f\u4e0d\u662f\u5de5\u4f5c\u6b63\u5e38\u3002\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u6211\u53d1\u73b0\u53ef\u4ee5\u7528Varnish\u7684rewrite \u529f\u80fd\u3002<\/p>\n<p>\u539f\u7406\u4e0a\u8bb2\uff0cVarnish\u6536\u5230\u4e00\u4e2aURL request\uff0c\u4f1a\u8c03\u7528vcl_recv\u51fd\u6570 \uff08\u53ef\u80fd\u662fcallback\u673a\u5236\uff09\uff0c\u7136\u540e\u6839\u636eheader\u4e2d\u7684URL\u6765\u5206\u6790\u5982\u4f55\u5177\u4f53\u5904\u7406\uff0c\u6bd4\u5982\u53ef\u4ee5\u53bb\u6389header\uff0c\u5bf9mobile\u7684browser agent\u7528mobile\u7248\u7684web server\uff0c\u8fd8\u53ef\u4ee5\u7528\u4e0d\u540c\u7684backend\u670d\u52a1\u5668\uff0c\u8fd9\u4e2a\u5c31\u662f\u7528\u8fd9\u4e2a\u529f\u80fd\u3002<\/p>\n<p>\u5148\u628a\u76f8\u5e94\u7684\u914d\u7f6e\u653e\u4e0a\u6765\uff1a<br \/>\ndefault.vcl\u4e2d\u5148\u6dfb\u52a0\u4e00\u4e2a\u540e\u53f0\u670d\u52a1\u5668\uff1a<br \/>\n<code><br \/>\nbackend monit {<br \/>\n  .host = \"localhost\";<br \/>\n  .port = \"2812\";<br \/>\n}<br \/>\n<\/code><\/p>\n<p>\u5728sub vcl_recv\u51fd\u6570\u4e2d\u589e\u52a0\u5bf9\/monit\u8bf7\u6c42\u7684\u91cd\u5199\uff08rewrite\uff09\uff0c\u5c31\u662f\u8bf4\u6bcf\u6b21\u8bbf\u95eexxx.com\/monit\u81ea\u52a8\u7ffb\u8bd1\u6210xxx.com\/, \u7136\u540e\u7528backend monit\uff08\u5c31\u662f\u4e0a\u9762\u7684localhost:2812\u670d\u52a1\u5668\uff09\u6765\u670d\u52a1\uff1a<\/p>\n<p><code><br \/>\n  if (req.url ~ \"^\/monit\"){<br \/>\n    set req.url = regsub(req.url, \"^\/monit\", \"\/\");<br \/>\n    set req.url = regsub(req.url, \"^\/\/\", \"\/\");<br \/>\n    set req.backend = monit;<br \/>\n  }<br \/>\n<\/code><\/p>\n<p>\u901a\u8fc7\u4e0a\u9762\u7684\u8bbe\u7f6e\uff0c\u5c31\u53ef\u4ee5\u5728\u5b66\u6821\u91cc\uff0c\u752880\u7aef\u53e3\u6765\u8bbf\u95ee\u670d\u52a1\u5668\u7aef2812\u7aef\u53e3\u7684\u5185\u5bb9\u4e86\u3002<br \/>\n\u6ce8\u610f\uff0c\u9ed8\u8ba4monit\u4f1a\u4f7f\u7528\u8fd9\u6837\u7684\u94fe\u63a5\uff1a xxx.com\/nginx<br \/>\n\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0cvarnish\u4e0d\u4f1a\u7528backend monit\u6765\u670d\u52a1\uff0c\u6211\u4eec\u9700\u8981\u624b\u52a8\u8bbf\u95ee\uff1axxx.com\/monit\/nginx<br \/>\n\u73b0\u5728\u8fd8\u6ca1\u6709\u60f3\u5230\u5982\u4f55\u89e3\u51b3\u8fd9\u79cd\u4e0d\u65b9\u4fbf\u3002<\/p>\n<p>\u540e\u8bdd1\uff1a <\/p>\n<p>Varnish\u662f\u4e00\u4e2a\u975e\u5e38\u5f3a\u5927\u7684proxy\uff0c\u7528\u5b83\u5185\u7f6e\u7684VCL\u8bed\u8a00\uff0c\u53ef\u4ee5\u5f88\u7075\u6d3b\u3001\u9ad8\u6548\uff08Varnish\u5185\u90e8\u628aVCL\u7f16\u8bd1\u6210C\u8bed\u8a00\uff09\u5904\u7406\u5404\u79cd\u7c7b\u578b\u7684HTTP request\u3002\u6bd4\u5982round-robin\u5f0f\u7684\u8d1f\u8f7d\u5747\u8861\u3002\u6700\u5e38\u7528\u7684\u4e24\u4e2a\u51fd\u6570\u662fvcl_recv \uff08\u8868\u793avarnish\u63a5\u6536\u5230browser\u7684\u8bf7\u6c42\uff09 \u548cvcl_fetch\uff08\u8868\u793avarnish\u5df2\u7ecf\u4ece\u540e\u53f0\u670d\u52a1\u5668\u53d6\u5f97\u6570\u636e\uff09\u3002\u66f4\u591a\u7684\u7528\u6cd5\u53ef\u4ee5\u89c1\uff1a<br \/>\n<a href=\"https:\/\/www.varnish-cache.org\/trac\/wiki\/Introduction\" title=\"Introduction - Varnish\" target=\"_blank\"><\/a><\/p>\n<p>\u540e\u8bdd2\uff1a<\/p>\n<p>Varnish\u4e0d\u4f1a\u50cfApache\/Nginx\u628alog\u5199\u5230\u78c1\u76d8\u3002\u5982\u9700\u8981\u68c0\u67e5log\uff0c\u53ef\u4ee5\u7528Varnish\u81ea\u5e26\u7684varnishlog\u3002<br \/>\n\u6bd4\u5982\u4e0b\u9762\u7684\uff1a<\/p>\n<pre>\r\n   12 SessionOpen  c 76.235.186.40 34862 :80\r\n   12 ReqStart     c 76.235.186.40 34862 911966818\r\n   12 RxRequest    c GET\r\n   12 RxURL        c \/monit\r\n   12 RxProtocol   c HTTP\/1.1\r\n   12 RxHeader     c Host: zhanxw.com\r\n   12 RxHeader     c User-Agent: Mozilla\/5.0 (Ubuntu; X11; Linux x86_64; rv:8.0) Gecko\/20100101 Firefox\/8.0\r\n   12 RxHeader     c Accept: text\/html,application\/xhtml+xml,application\/xml;q=0.9,*\/*;q=0.8\r\n   12 RxHeader     c Accept-Language: en-us,en;q=0.5\r\n   12 RxHeader     c Accept-Encoding: gzip, deflate\r\n   12 RxHeader     c Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n   12 RxHeader     c Connection: keep-alive\r\n   12 RxHeader     c Cookie: __utma=134065221.936534807.1323323714.1323329816.1323533189.3; __utmz=134065221.1323323714.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=134065221\r\n   12 RxHeader     c Authorization: Basic YWRtaW46eGlhb3dlaXhpYW95aQ==\r\n   12 RxHeader     c Cache-Control: max-age=0\r\n   12 VCL_call     c recv\r\n   12 VCL_return   c pass\r\n   12 VCL_call     c hash\r\n   12 VCL_return   c hash\r\n   12 VCL_call     c pass\r\n   12 VCL_return   c pass\r\n   14 BackendOpen  b monit 127.0.0.1 37258 127.0.0.1 2812\r\n   12 Backend      c 14 monit monit\r\n   14 TxRequest    b GET\r\n   14 TxURL        b \r\n   14 TxProtocol   b HTTP\/1.1\r\n   14 TxHeader     b Host: zhanxw.com\r\n   14 TxHeader     b User-Agent: Mozilla\/5.0 (Ubuntu; X11; Linux x86_64; rv:8.0) Gecko\/20100101 Firefox\/8.0\r\n   14 TxHeader     b Accept: text\/html,application\/xhtml+xml,application\/xml;q=0.9,*\/*;q=0.8\r\n   14 TxHeader     b Accept-Language: en-us,en;q=0.5\r\n   14 TxHeader     b Accept-Encoding: gzip, deflate\r\n   14 TxHeader     b Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n   14 TxHeader     b Cookie: __utma=134065221.936534807.1323323714.1323329816.1323533189.3; __utmz=134065221.1323323714.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=134065221\r\n   14 TxHeader     b Authorization: Basic YWRtaW46eGlhb3dlaXhpYW95aQ==\r\n   14 TxHeader     b X-Forwarded-For: 76.235.186.40\r\n   14 TxHeader     b X-Varnish: 911966818\r\n   14 RxProtocol   b HTTP\/1.0\r\n   14 RxStatus     b 400\r\n   14 RxResponse   b Bad Request\r\n   14 RxHeader     b Date: Sat, 10 Dec 2011 17:58:50 GMT\r\n   14 RxHeader     b Server: monit 5.2.1\r\n   14 RxHeader     b Content-Type: text\/html\r\n   14 RxHeader     b Connection: close\r\n   12 TTL          c 911966818 RFC 120 1323539930 0 0 0 0\r\n   12 VCL_call     c fetch\r\n   12 VCL_return   c pass\r\n   12 ObjProtocol  c HTTP\/1.1\r\n   12 ObjStatus    c 400\r\n   12 ObjResponse  c Bad Request\r\n   12 ObjHeader    c Date: Sat, 10 Dec 2011 17:58:50 GMT\r\n   12 ObjHeader    c Server: monit 5.2.1\r\n   12 ObjHeader    c Content-Type: text\/html\r\n   14 Length       b 201\r\n   14 BackendClose b monit\r\n   12 VCL_call     c deliver\r\n   12 VCL_return   c deliver\r\n   12 TxProtocol   c HTTP\/1.1\r\n   12 TxStatus     c 400\r\n   12 TxResponse   c Bad Request\r\n   12 TxHeader     c Server: monit 5.2.1\r\n   12 TxHeader     c Content-Type: text\/html\r\n   12 TxHeader     c Content-Length: 201\r\n   12 TxHeader     c Date: Sat, 10 Dec 2011 17:58:50 GMT\r\n   12 TxHeader     c X-Varnish: 911966818\r\n   12 TxHeader     c Age: 0\r\n   12 TxHeader     c Via: 1.1 varnish\r\n   12 TxHeader     c Connection: keep-alive\r\n   12 Length       c 201\r\n   12 ReqEnd       c 911966818 1323539930.287971973 1323539930.288527966 0.000089884 0.000468969 0.000087023\r\n   12 Debug        c \"herding\"\r\n<\/pre>\n<p>\u5176\u4e2d\u6700\u91cd\u8981\u7684\u662f\u7b2c3\u5217\uff1a b \u8868\u793a \u201cbackend\u201d\uff0c\u5c31\u662fvarnish\u548cbackend\u7aef\u7684\u901a\u4fe1\uff1b c \u8868\u793a \u201cclient\u201d\uff0c\u5c31\u662fvarnish\u548cclient\u7aef\uff08www browser\uff09\u4e4b\u95f4\u7684\u901a\u4fe1\u3002<\/p>\n<p>\u7b2c2\u5217\u4e2d\uff0c VCL_call \u8868\u793avarnish\u5185\u90e8\u54ea\u4e2a\u51fd\u6570\u88ab\u8c03\u7528\uff0cVCL_return\u5219\u662f\u8c03\u7528\u7ed3\u679c\u662f\u4ec0\u4e48\u3002\u6bd4\u5982\uff1aVCL_call retch \uff0c\u8868\u793aVCL\u914d\u7f6e\u6587\u4ef6\u4e2dvcl_fetch\u51fd\u6570\u88ab\u8c03\u7528\uff1b VCL_return pass\uff0c\u8868\u793areturn pass\uff0c\u540c\u6837\u4e5f\u662fVCL\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684\u8bed\u53e5\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Use varnish to bypass school proxy (rewrite URL to bypass port blocking). \u5b66\u6821\u7684\u9632\u706b\u5899\u89c4\u5219\u5f88\u4e25\u683c\uff0c\u9664\u4e8680\uff0c443\u7b49\u5e38\u7528\u7aef\u53e3\u5916\uff0c\u4e0d\u5141\u8bb8\u7279\u6b8a\u7aef\u53e3\u7684\u901a\u4fe1\uff08\u5c31\u8fdegit\u4f7f\u7528\u76849418\u7aef\u53e3\u4e5f\u88abblock\u8fc7\uff09\u3002 \u53ef\u4ee5\u6211\u7684\u7f51\u7ad92812\u7aef\u53e3\u6709monit\u670d\u52a1\uff0c\u6211\u5e38\u5e38\u60f3\u4ece\u5b66\u6821\u7684\u7535\u8111\u8bbf\u95ee \uff0c\u770b\u770b\u81ea\u5df1\u7f51\u7ad9\u7684\u662f\u4e0d\u662f\u5de5\u4f5c\u6b63\u5e38\u3002\u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u6211\u53d1\u73b0\u53ef\u4ee5\u7528Varnish\u7684rewrite \u529f\u80fd\u3002 \u539f\u7406\u4e0a\u8bb2\uff0cVarnish\u6536\u5230\u4e00\u4e2aURL request\uff0c\u4f1a\u8c03\u7528vcl_recv\u51fd\u6570 \uff08\u53ef\u80fd\u662fcallback\u673a\u5236\uff09\uff0c\u7136\u540e\u6839\u636eheader\u4e2d\u7684URL\u6765\u5206\u6790\u5982\u4f55\u5177\u4f53\u5904\u7406\uff0c\u6bd4\u5982\u53ef\u4ee5\u53bb\u6389header\uff0c\u5bf9mobile\u7684browser agent\u7528mobile\u7248\u7684web server\uff0c\u8fd8\u53ef\u4ee5\u7528\u4e0d\u540c\u7684backend\u670d\u52a1\u5668\uff0c\u8fd9\u4e2a\u5c31\u662f\u7528\u8fd9\u4e2a\u529f\u80fd\u3002 \u5148\u628a\u76f8\u5e94\u7684\u914d\u7f6e\u653e\u4e0a\u6765\uff1a default.vcl\u4e2d\u5148\u6dfb\u52a0\u4e00\u4e2a\u540e\u53f0\u670d\u52a1\u5668\uff1a backend monit { .host = &#8220;localhost&#8221;; .port = &#8220;2812&#8221;; } \u5728sub vcl_recv\u51fd\u6570\u4e2d\u589e\u52a0\u5bf9\/monit\u8bf7\u6c42\u7684\u91cd\u5199\uff08rewrite\uff09\uff0c\u5c31\u662f\u8bf4\u6bcf\u6b21\u8bbf\u95eexxx.com\/monit\u81ea\u52a8\u7ffb\u8bd1\u6210xxx.com\/, \u7136\u540e\u7528backend monit\uff08\u5c31\u662f\u4e0a\u9762\u7684localhost:2812\u670d\u52a1\u5668\uff09\u6765\u670d\u52a1\uff1a if (req.url ~ &#8220;^\/monit&#8221;){ set req.url = regsub(req.url, &#8220;^\/monit&#8221;, &#8220;\/&#8221;); set req.url = regsub(req.url, &#8220;^\/\/&#8221;, &#8220;\/&#8221;); set req.backend [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[71,69,70,23],"class_list":["post-268","post","type-post","status-publish","format-standard","hentry","category-sysadmin","tag-port","tag-proxy","tag-rewrite","tag-varnish"],"_links":{"self":[{"href":"https:\/\/zhanxw.com\/blog\/wp-json\/wp\/v2\/posts\/268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zhanxw.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zhanxw.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zhanxw.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/zhanxw.com\/blog\/wp-json\/wp\/v2\/comments?post=268"}],"version-history":[{"count":0,"href":"https:\/\/zhanxw.com\/blog\/wp-json\/wp\/v2\/posts\/268\/revisions"}],"wp:attachment":[{"href":"https:\/\/zhanxw.com\/blog\/wp-json\/wp\/v2\/media?parent=268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zhanxw.com\/blog\/wp-json\/wp\/v2\/categories?post=268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zhanxw.com\/blog\/wp-json\/wp\/v2\/tags?post=268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}