Every one, I'm a newbie for varnish and I need your help. My varnish has an strange problem. It create different hash for same url for different client, and this result in any new user which access my site can't hit the cache.
>From the varnish log, I found the varnish hit different object though the hash data is same. Following are the logs. *Varnish Log From Client 1 (192.168.66.81)* 1 14 StatSess c 192.168.66.81 49278 0 1 0 0 0 0 0 0 2 11 SessionOpen c 192.168.66.81 49300 :80 3 11 ReqStart c 192.168.66.81 49300 1750481507 4 11 RxRequest c GET 5 11 RxURL c /Mainpage 6 11 RxProtocol c HTTP/1.1 7 11 RxHeader c Host: zh.moegirl.org 8 11 RxHeader c Connection: keep-alive 9 11 RxHeader c Cache-Control: max-age=0 10 11 RxHeader c Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 11 11 RxHeader c User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36 12 11 RxHeader c Accept-Encoding: gzip,deflate,sdch 13 11 RxHeader c Accept-Language: en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4 14 11 RxHeader c Cookie: __utma=1.51232645.1400082743.1400082743.1400082743.1; __utmb=1.1.10.1400082743; __utmc=1; __utmz=1.1400082743.1.1. utmcsr=(direct)|utmccn=(direct)|utmcmd=( 15 none); __gads=ID=d1f7dc9d52cd4a78:T=1400082743:S=ALNI_MbXhSNK0VtcUY7M9mjv8nanysdcbg 16 11 VCL_call c recv lookup 17 11 VCL_call c hash 18 11 Hash c /Mainpage 19 11 Hash c zh.moegirl.org 20 11 VCL_return c hash 21 11 Hit c 1750481502 22 11 VCL_call c hit deliver 23 11 VCL_call c deliver deliver 24 11 TxProtocol c HTTP/1.1 25 11 TxStatus c 200 26 11 TxResponse c OK 27 11 TxHeader c Server: nginx/1.6.0 28 11 TxHeader c Content-Type: text/html; charset=UTF-8 29 11 TxHeader c Vary: Accept-Encoding, Accept-Encoding, Cookie, Accept-Language 30 11 TxHeader c X-Content-Type-Options: nosniff 31 11 TxHeader c Content-language: zh 32 11 TxHeader c Cache-Control: s-maxage=2678400, must-revalidate, max-age=0 33 11 TxHeader c Last-Modified: Mon, 12 May 2014 20:01:11 GMT 34 11 TxHeader c Content-Encoding: gzip 35 11 TxHeader c X-Varnish: 1594679620 36 11 TxHeader c Via: 1.1 varnish 37 11 TxHeader c X-Cache: MISS 38 11 TxHeader c host: zh.moegirl.org 39 11 TxHeader c Content-Length: 14977 40 11 TxHeader c Accept-Ranges: bytes 41 11 TxHeader c Date: Wed, 14 May 2014 15:52:33 GMT 42 11 TxHeader c X-Varnish: 1750481507 1750481502 43 11 TxHeader c Age: 180 44 11 TxHeader c Via: 1.1 varnish 45 11 TxHeader c Connection: keep-alive 46 11 TxHeader c v-Cache: HIT 47 11 Length c 14977 48 11 ReqEnd c 1750481507 1400082753.326334476 1400082753.326504469 0.000313997 0.000061512 0.000108480 *Varnish Log From Client 2 (192.168.66.106)* 1 11 SessionOpen c 192.168.66.106 34154 :80 2 11 ReqStart c 192.168.66.106 34154 1750481508 3 11 RxRequest c GET 4 11 RxURL c /Mainpage 5 11 RxProtocol c HTTP/1.1 6 11 RxHeader c Host: zh.moegirl.org 7 11 RxHeader c Connection: keep-alive 8 11 RxHeader c Cache-Control: max-age=0 9 11 RxHeader c Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 10 11 RxHeader c User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.132 Safari/537.36 11 11 RxHeader c Accept-Encoding: gzip,deflate,sdch 12 11 RxHeader c Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4,en-US;q=0.2,en-GB;q=0.2 13 11 RxHeader c Cookie: __gads=ID=b048dccb69e9da93:T=1399163153:S=ALNI_Mao_IUR1acm9tlz_9E4C5DuSDZ98g; wikiEditor-0-booklet-characters-page=latin; wikiEditor-0-toolbar- section=advanced; moegirlSSOUserName=Fishthirteen; moegirlSSO_session=bfmb7k0dadsau1dalp5ou53uc6; moegir 14 11 VCL_call c recv lookup 15 11 VCL_call c hash 16 11 Hash c /Mainpage 17 11 Hash c zh.moegirl.org 18 11 VCL_return c hash 19 11 Hit c 1750481474 20 11 VCL_call c hit deliver 21 11 VCL_call c deliver deliver 22 11 TxProtocol c HTTP/1.1 23 11 TxStatus c 200 24 11 TxResponse c OK 25 11 TxHeader c Server: nginx/1.6.0 26 11 TxHeader c Content-Type: text/html; charset=UTF-8 27 11 TxHeader c Vary: Accept-Encoding, Accept-Encoding, Cookie, Accept-Language 28 11 TxHeader c X-Content-Type-Options: nosniff 29 11 TxHeader c Content-language: zh 30 11 TxHeader c Cache-Control: s-maxage=2678400, must-revalidate, max-age=0 31 11 TxHeader c Last-Modified: Mon, 12 May 2014 20:01:11 GMT 32 11 TxHeader c Content-Encoding: gzip 33 11 TxHeader c X-Varnish: 1594676989 34 11 TxHeader c Via: 1.1 varnish 35 11 TxHeader c X-Cache: MISS 36 11 TxHeader c host: zh.moegirl.org 37 11 TxHeader c Content-Length: 14975 38 11 TxHeader c Accept-Ranges: bytes 39 11 TxHeader c Date: Wed, 14 May 2014 15:53:18 GMT 40 11 TxHeader c X-Varnish: 1750481508 1750481474 41 11 TxHeader c Age: 514 42 11 TxHeader c Via: 1.1 varnish 43 11 TxHeader c Connection: keep-alive 44 11 TxHeader c v-Cache: HIT 45 11 Length c 14975 46 11 ReqEnd c 1750481508 1400082798.821015596 1400082798.821227551 0.000247717 0.000054121 0.000157833 *You can see the hash keys are same (**/Mainpage + **zh.moegirl.org <http://zh.moegirl.org>) but the hit object is different(1750481502 and 1750481474)* *And following is my default.vcl*. I just change a little from the default vcl settings. backend default { .host = "zh.moegirl.org"; .port = "80"; } # # Below is a commented-out copy of the default VCL logic. If you # redefine any of these subroutines, the built-in logic will be # appended to your code. sub vcl_recv { if (req.restarts == 0) { if (req.http.x-forwarded-for) { set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip; } else { set req.http.X-Forwarded-For = client.ip; } } if (req.request != "GET" && req.request != "HEAD" && req.request != "PUT" && req.request != "POST" && req.request != "TRACE" && req.request != "OPTIONS" && req.request != "DELETE") { /* Non-RFC2616 or CONNECT which is weird. */ return (pipe); } if (req.request != "GET" && req.request != "HEAD") { /* We only deal with GET and HEAD by default */ return (pass); } // if (req.http.Authorization || req.http.Cookie) { // /* Not cacheable by default */ // //return (pass); // } if (req.http.Cookie ~ "UserID") { } else { unset req.http.Cookie; } return (lookup); } sub vcl_pipe { # Note that only the first request to the backend will have # X-Forwarded-For set. If you use X-Forwarded-For and want to # have it set for all requests, make sure to have: # set bereq.http.connection = "close"; # here. It is not set by default as it might break some broken web # applications, like IIS with NTLM authentication. return (pipe); } sub vcl_pass { return (pass); } sub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } return (hash); } sub vcl_hit { return (deliver); } sub vcl_miss { return (fetch); } sub vcl_fetch { if (beresp.http.host != req.http.host) { set beresp.http.host = req.http.host; } //set beresp.http.host = "zh.moegirl.org:6081"; if (beresp.ttl <= 0s || beresp.http.Set-Cookie || beresp.http.Vary == "*") { /* * Mark as "Hit-For-Pass" for the next 2 minutes */ set beresp.ttl = 120 s; return (hit_for_pass); } return (deliver); } sub vcl_deliver { if (obj.hits > 0) { set resp.http.v-Cache = "HIT"; } else { set resp.http.v_Cache = "MISS"; } return (deliver); } sub vcl_error { set obj.http.Content-Type = "text/html; charset=utf-8"; set obj.http.Retry-After = "5"; 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> <p>Varnish cache server</p> </body> </html> "}; return (deliver); } sub vcl_init { return (ok); } sub vcl_fini { return (ok); } *And my enviroment* Varnish Version: 3.0.5 OS: Ubuntu 14.04 LTS Browers: Chromium 34 (One is in Linux(Debain Testing), and other is in Windows 8) Besides, please forgive my pool English. Thank you very much! Fish Thirteen
_______________________________________________ varnish-misc mailing list [email protected] https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc
