varnish multiple backends question about POST

Karagiannidis Yiannis gkaragiannidis at dolnet.gr
Tue Jul 24 18:06:14 CEST 2012


Hi!

I have setup one varnish server for multiple sites running on multiple
backends. 

For example:

Domains: domainA.com, domainB.com running on backend: backendC
Domains: domain0.com, domain1.com running on backend: backend-10 Everything
else goes to default backend DC


I also have the following setup

In sub vcl_recv {

if (req.http.host ~ " domainA.com$") {
        unset req.http.cookie;
        set req.backend = backendC;
        return (lookup);
        }

else if (req.http.host ~ "domainB.com$") {
        set req.backend = backendC;
        if ( req.request == "POST" ) {
                                return(pass);
                       }
        return (lookup);
        }

else if (req.http.host ~ "domain0.com$") {
        set req.backend = backend-10;
        if ( req.request == "POST" ) {
                                return(pass);
                       }
        return (lookup);
        }


else {
# Use the default backend for all other requests set req.backend = default;
return (lookup);
        }

        return (lookup);
}

My problem is that I have POST requests for both domainB.com and domain0.com
and each time I have to use set req.backend = if ( req.request == "POST" ) {
                                return(pass); in order to pass the request
to the correct backend Is there a simpler way of handling post requests to
different domains?
----------------------------------------------------------------------------
---------------------------------
And a second question if I use
if (req.request != "GET" && req.request != "HEAD") {
                // Not cacheable by default if NOT GET,HEAD
                return(pass);
        }
Then POST requests are passed to the default backend which, of course gives
me an 404 error!

Thanks in advance
Yiannis




More information about the varnish-misc mailing list