1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

How to turn off varnish on xenforo

Discussion in 'Server Configuration and Hosting' started by chevp, Jul 25, 2015.

  1. chevp

    chevp Member

    I installed xenforo on my sub-domain and my main domain has wordpress. I cannot login to my xenforo forum because of varnish, . How to disable varnish on my sub domain.
     
  2. md_5

    md_5 Well-Known Member

    We need to know more about your setup.
    Are connections going straight to Varnish on port 80? What webserver, etc etc.
     
  3. Set3sh

    Set3sh Active Member

    Hello,

    Set this at the top of the vcl_recv section in your varnish config file:

    if (req.http.host == 'subdomain.domain.tld') {
    return (pass);
    }


    Kind regards,
    George.
     
  4. chevp

    chevp Member

    When i tried that command it crashed. This is how the command looks like
    Code:
    # This is a basic VCL configuration file for varnish.  See the vcl(7)
    # man page for details on VCL syntax and semantics.
    #
    # Default backend definition.  Set this to point to your content
    # server.
    #
    
    backend default {
      .host = "192.169.236.178";
      .port = "8080";
    }
    
    #
    # 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 { return(pass); }
    sub vcl_recv {
    #return(pass);
    
    #custom section
    
      if(req.http.host ~"forums\.technobezz\.com") {
            return(pipe);}
    
      if (req.http.host ~ "reedstech\.com") {
            return(pipe);}
      if (req.http.host ~ "store\.technobezz\.com") {
            return(pipe);}
           
    #custom section ends
    
    #custom section 2
    
      if (req.http.Accept-Encoding)
      {
        if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|woff|mp3|ogg)$") {
          # No point in compressing these
          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;
        }
      }
     
    #custom section 2 ends 
    
    #custom section 3
           
           
    
         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);
         }
    
    #custom section 4
    
      # ONLY CACHE GET AND HEAD REQUESTS
      # ##########################################################
      if (req.request != "GET" && req.request != "HEAD") {
        return (pass);
      }
     
    #custom section 4 ends   
    #custom5
       if ( req.http.cookie ~ "wordpress_logged_in" ) {
     
        return( pass );
      }
    #custom5 ends
    #custom6
       if (
        !(req.url ~ "wp-(login|admin)")
        && !(req.url ~ "&preview=true" )
      ){
        unset req.http.cookie;
      }
     
    #custom6 ends
    
    
    #custom7
         if (req.http.Authorization || req.http.Cookie) {
             /* Not cacheable by default */
             return (pass);
         }
    #custom7 ends
    #custom8
    
      if (
        req.url ~ "preview"
        || req.url ~ "nocache"
        || req.url ~ "\.css$"
        || req.url ~ "\.js$"
        || req.url ~ "\.jpg$"
        || req.url ~ "\.jpeg$"
        || req.url ~ "\.woff$"
        || req.url ~ "\.gif$"
        || req.url ~ "\.png$"
      ) {
        return (lookup);
      }
    
    #custom8 ends      
        
         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 {
    #     set req.hash += req.url;
    #     if (req.http.host) {
    #         set req.hash += req.http.host;
    #     } else {
    #         set req.hash += server.ip;
    #     }
    #     return (hash);
    # }
    #
    # HIT FUNCTION
    # ##########################################################
    sub vcl_hit {
      # IF THIS IS A PURGE REQUEST THEN DO THE PURGE
      # ##########################################################
      if (req.request == "PURGE") {
        purge;
        error 200 "Purged.";
      }
      return (deliver);
    }
    
    # MISS FUNCTION
    # ##########################################################
    sub vcl_miss {
      if (req.request == "PURGE") {
        purge;
        error 200 "Purged.";
      }
      return (fetch);
    }
    
    # FETCH FUNCTION
    # ##########################################################
    sub vcl_fetch {
      # I SET THE VARY TO ACCEPT-ENCODING, THIS OVERRIDES W3TC
      # TENDANCY TO SET VARY USER-AGENT.  YOU MAY OR MAY NOT WANT
      # TO DO THIS
      # ##########################################################
      set beresp.http.Vary = "Accept-Encoding";
    
      # IF NOT WP-ADMIN THEN UNSET COOKIES AND SET THE AMOUNT OF
      # TIME THIS PAGE WILL STAY CACHED (TTL)
      # ##########################################################
      if (!(req.url ~ "wp-(login|admin)") && !req.http.cookie ~ "wordpress_logged_in" ) {
        unset beresp.http.set-cookie;
        set beresp.ttl = 96h;
      }
    
      if (beresp.ttl <= 0s ||
        beresp.http.Set-Cookie ||
        beresp.http.Vary == "*") {
          set beresp.ttl = 120 s;
          return (hit_for_pass);
      }
    
      return (deliver);
    }
    
    # DELIVER FUNCTION
    # ##########################################################
    sub vcl_deliver {
      # IF THIS PAGE IS ALREADY CACHED THEN RETURN A 'HIT' TEXT
      # IN THE HEADER (GREAT FOR DEBUGGING)
      # ##########################################################
      if (obj.hits > 0) {
        set resp.http.X-Cache = "HIT";
      # IF THIS IS A MISS RETURN THAT IN THE HEADER
      # ##########################################################
      } else {
        set resp.http.X-Cache = "MISS";
      }
    }
    
    
    #
    # sub vcl_error {
    #     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>
    #     <p>Varnish cache server</p>
    #   </body>
    # </html>
    # "};
    #     return (deliver);
    # }
    
     
  5. chevp

    chevp Member

  6. Set3sh

    Set3sh Active Member

    Hello,

    Remove it.

    Add after it:

    if (req.http.host == 'forum.domain.tld') {
    return (pass);
    }


    Change the address to match your forums one.
    If you still cannot implement the suggested solution...


    Kind regards,
    George.
     
    chevp likes this.
  7. chevp

    chevp Member

    Thank you @Set3sh removing the line and adding the one you provided works. :) :)
     
  8. Set3sh

    Set3sh Active Member

    Sure.
    Don't mention it.
     

Share This Page