<div dir="ltr">Hi,<div><br></div><div>you are hashing the cookie, that is pretty sure to kill your hit ratio.</div><div><br></div><div>Regards,</div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>-- <br></div>Guillaume Quintard<br></div></div></div>
<br><div class="gmail_quote">On Mon, May 14, 2018 at 9:40 AM, jack Linux <span dir="ltr"><<a href="mailto:ilinuxer.85@gmail.com" target="_blank">ilinuxer.85@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I Have website running on cloudflare + nginx + varnish on centos 6.9<br>
arch 64bit Distribution<br>
<br>
<br>
============<br>
Header status =<br>
============<br>
<br>
    HTTP/1.1 200 OK<br>
    Date: Mon, 14 May 2018 07:25:34 GMT<br>
    Content-Type: text/html<br>
    Connection: keep-alive<br>
    Set-Cookie: __cfduid=<wbr>d0d5a5c3e3423f286ca476d1fecbee<wbr>b7a1526282734;<br>
expires=Tue, 14-May-19 07:25:34 GMT; path=/; domain=.<a href="http://site.com" rel="noreferrer" target="_blank">site.com</a>;<br>
HttpOnly<br>
    X-Powered-By: PHP/5.4.45<br>
    Set-Cookie: PHPSESSID=<wbr>4a3847f117e1a757e8b3f92784987b<wbr>fd; path=/<br>
    Expires: Thu, 19 Nov 1981 08:52:00 GMT<br>
    Cache-Control: private, must-revalidate<br>
    Pragma: no-cache<br>
    Set-Cookie: detect_mobiles=20; expires=Tue, 15-May-2018 00:08:54 GMT; path=/<br>
    Vary: Accept-Encoding<br>
    X-Varnish: 1615241683<br>
    Age: 0<br>
    Via: 1.1 varnish<br>
    X-Cache: MISS<br>
    Set-Cookie: <a href="http://site.com" rel="noreferrer" target="_blank">site.com</a>=web01; path=/<br>
    Server: cloudflare<br>
    CF-RAY: 41aba1b134769c35-AMS<br>
<br>
=============<br>
= varnish config =<br>
=============<br>
<br>
/* SET THE HOST AND PORT OF SITE<br>
 * ******************************<wbr>***************************/<br>
<br>
backend default {<br>
        .host = "10.0.0.1";<br>
        .port = "8080";<br>
}<br>
<br>
# SET THE ALLOWED IP OF PURGE REQUESTS<br>
# ##############################<wbr>############################<br>
acl purge {<br>
        "localhost";<br>
        "10.0.0.1";<br>
}<br>
<br>
#THE RECV FUNCTION<br>
# ##############################<wbr>############################<br>
sub vcl_recv {<br>
        #remove HTTPOXY CGI vulnerability<br>
        unset req.http.proxy;<br>
<br>
        #remove extraneous host ports<br>
        set req.http.host = regsub(req.http.Host, ":[0-9]+", "");<br>
<br>
        # set realIP by trimming CloudFlare IP which will be used for<br>
various checks<br>
        set req.http.X-Actual-IP = regsub(req.http.X-Forwarded-<wbr>For,<br>
"[, ].*$", "");<br>
<br>
        # Enable smart refreshing<br>
        if (req.http.Cache-Control ~ "no-cache" && client.ip ~ purge) {<br>
                set req.hash_always_miss = true;<br>
        }<br>
<br>
        # Unset cloudflare cookies<br>
<br>
        # Remove has_js and CloudFlare/Google Analytics __* cookies.<br>
        set req.http.Cookie = regsuball(req.http.Cookie,<br>
"(^|;\s*)(_[_a-z]+|has_js)=[^;<wbr>]*", "");<br>
        # Remove a ";" prefix, if present.<br>
        set req.http.Cookie = regsub(req.http.Cookie, "^;\s*", "");<br>
<br>
        # For Testing: If you want to test with Varnish passing (not<br>
caching) uncomment<br>
        # return( pass );<br>
<br>
        # FORWARD THE IP OF THE REQUEST<br>
        if (req.restarts == 0) {<br>
                if (req.http.x-forwarded-for) {<br>
                        set req.http.X-Forwarded-For =<br>
                        req.http.X-Forwarded-For + ", " + client.ip;<br>
                } else {<br>
                        set req.http.X-Forwarded-For = client.ip;<br>
                }<br>
        }<br>
<br>
# DO NOT CACHE RSS FEED<br>
        if (req.url ~ "/feed/") {<br>
                return ( pass );<br>
        }<br>
<br>
## Do not cache search results, comment these 3 lines if you do want<br>
to cache them<br>
<br>
        if (req.url ~ "/\?s\=") {<br>
                return ( pass );<br>
        }<br>
<br>
# CLEAN UP THE ENCODING HEADER.<br>
# SET TO GZIP, DEFLATE, OR REMOVE ENTIRELY.  WITH VARY ACCEPT-ENCODING<br>
# VARNISH WILL CREATE SEPARATE CACHES FOR EACH<br>
# DO NOT ACCEPT-ENCODING IMAGES, ZIPPED FILES, AUDIO, ETC.<br>
# ##############################<wbr>############################<br>
        if (req.http.Accept-Encoding) {<br>
                if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|<wbr>tbz|mp3|ogg)$") {<br>
                # No point in compressing these<br>
                        remove req.http.Accept-Encoding;<br>
                } elsif (req.http.Accept-Encoding ~ "gzip") {<br>
                set req.http.Accept-Encoding = "gzip";<br>
                } elsif (req.http.Accept-Encoding ~ "deflate") {<br>
                set req.http.Accept-Encoding = "deflate";<br>
                } else {<br>
                # unknown algorithm<br>
                remove req.http.Accept-Encoding;<br>
                }<br>
        }<br>
<br>
# IF THIS IS A PURGE REQUEST, THEN CHECK THE IPS SET ABOVE<br>
# BLOCK IF NOT ONE OF THOSE IPS<br>
# ##############################<wbr>############################<br>
        if (req.request == "PURGE") {<br>
                if ( !client.ip ~ purge ) {<br>
                        error 405 "Not allowed.";<br>
                }<br>
                return (lookup);<br>
        }<br>
<br>
# PIPE ALL NON-STANDARD REQUESTS<br>
# ##############################<wbr>############################<br>
        if (req.request != "GET" &&<br>
                req.request != "HEAD" &&<br>
                req.request != "PUT" &&<br>
                req.request != "POST" &&<br>
                req.request != "TRACE" &&<br>
                req.request != "OPTIONS" &&<br>
                req.request != "DELETE") {<br>
                return (pipe);<br>
        }<br>
<br>
# ONLY CACHE GET AND HEAD REQUESTS<br>
# ##############################<wbr>############################<br>
        if (req.request != "GET" && req.request != "HEAD") {<br>
                return (pass);<br>
        }<br>
<br>
# IF YOU GET HERE THEN THIS REQUEST SHOULD BE CACHED<br>
# ##############################<wbr>############################<br>
        return (lookup);<br>
}<br>
<br>
sub vcl_hash {<br>
#this is to store cache based on PHPSESSID or woocommerce cookie so<br>
cart doesn't show 0<br>
        if (req.http.cookie) {<br>
                hash_data(req.http.cookie);<br>
        }<br>
    #fix flexible ssl css<br>
        if (req.http.x-forwarded-proto) {<br>
                hash_data(req.http.x-<wbr>forwarded-proto);<br>
        }<br>
}<br>
<br>
# HIT FUNCTION<br>
# ##############################<wbr>############################<br>
sub vcl_hit {<br>
# IF THIS IS A PURGE REQUEST THEN DO THE PURGE<br>
# ##############################<wbr>############################<br>
        if (req.request == "PURGE") {<br>
                purge;<br>
                error 200 "Purged.";<br>
        }<br>
<br>
        return (deliver);<br>
}<br>
<br>
# MISS FUNCTION<br>
# ##############################<wbr>############################<br>
sub vcl_miss {<br>
        if (req.request == "PURGE") {<br>
                purge;<br>
                error 200 "Purged.";<br>
        }<br>
<br>
        return (fetch);<br>
}<br>
<br>
# FETCH FUNCTION<br>
# ##############################<wbr>############################<br>
sub vcl_fetch {<br>
# I SET THE VARY TO ACCEPT-ENCODING, THIS OVERRIDES W3TC<br>
# TENDANCY TO SET VARY USER-AGENT.  YOU MAY OR MAY NOT WANT<br>
# TO DO THIS<br>
# ##############################<wbr>############################<br>
<br>
        set beresp.http.Vary = "Accept-Encoding";<br>
<br>
}<br>
<br>
# DELIVER FUNCTION #<br>
##############################<wbr>############################<br>
sub vcl_deliver {<br>
<br>
    if ( req.url ~ "\?action=wpp_get_popular" && !req.http.cookie ~<br>
"wordpress_logged_in" ) {<br>
        # Remove headers preventing Cloudflare cache<br>
        unset resp.http.Cache-Control;<br>
        unset resp.http.Expires;<br>
        unset resp.http.Pragma;<br>
        unset resp.http.ETag;<br>
        # Cache request in browser for 1 day (in seconds)<br>
        set resp.http.Cache-Control = "max-age=259200";<br>
    }<br>
<br>
<br>
# IF THIS PAGE IS ALREADY CACHED THEN RETURN A 'HIT' TEXT<br>
# IN THE HEADER (GREAT FOR DEBUGGING)<br>
# ##############################<wbr>############################<br>
        if (obj.hits > 0) {<br>
                set resp.http.X-Cache = "HIT";<br>
# IF THIS IS A MISS RETURN THAT IN THE HEADER<br>
# ##############################<wbr>############################<br>
        } else {<br>
                set resp.http.X-Cache = "MISS";<br>
        }<br>
}<br>
______________________________<wbr>_________________<br>
varnish-misc mailing list<br>
<a href="mailto:varnish-misc@varnish-cache.org">varnish-misc@varnish-cache.org</a><br>
<a href="https://www.varnish-cache.org/lists/mailman/listinfo/varnish-misc" rel="noreferrer" target="_blank">https://www.varnish-cache.org/<wbr>lists/mailman/listinfo/<wbr>varnish-misc</a><br>
</blockquote></div><br></div>