apache - Varnish not ignoring subdomain despite vcl rules -
i running basic lamp server apache on port 80, , varnish on port 81. attempting exclude subdomain of primary site entirely, have had no luck in doing far, , i'm not sure why.
as can see below, have rule in place a) skip logged in users on subdomain, , b) skip subdomain entirely. neither of these seem work however. there wrong vcl configuration?
backend default { .host = "my.server.ip.address"; .port = "80"; } sub vcl_recv { call identify_device; # allow back-end serve stale content if responding slowly. set req.grace = 2m; # cache following file types users. if ( req.url ~ "(?i)\.(png|gif|jpeg|jpg|ico|swf|css|js|html|htm)(\?[a-z0-9]+)?$" ) { unset req.http.cookie; } # don't serve cached pages logged in users if ( req.http.cookie ~ "wordpress_logged_in" || req.url ~ "vaultpress=true" ) { return( pass ); } #lets skip logged in users on subdomain too! if ( req.http.cookie ~ "dmr_user" ) { return (pass); } #skip subdomain.domain.com if (req.http.host ~ "subdomain.domain.com") { return (pass); } #following woocommerce , comments if (req.url ~ "^/(cart|my-account|checkout|addons|wp-comments-post)") { return (pass); } #lets skip logged in users on entries too! if ( req.http.cookie ~ "dmr_user" ) { return (pass); } if ( req.url ~ "\?add-to-cart=" ) { return (pass); } # drop cookies sent wordpress. if ( ! ( req.url ~ "wp-(login|admin)" ) ) { unset req.http.cookie; } } sub vcl_fetch { if (beresp.ttl < 180s) { set beresp.ttl = 180s; } if (!(req.url ~ "wp-(login|admin)")) { unset beresp.http.set-cookie; } } sub vcl_hash { hash_data(req.http.x-device); } sub vcl_deliver { if (obj.hits > 0) { set resp.http.x-cache = "hit"; } else { set resp.http.x-cache = "miss"; } }
you skipping processing of subdomain halfway handling, ie instructions executed in order. moving skip domain check directly @ top of sub vcl_recv should ensure no other rules gets executed against requests subdomain.
Comments
Post a Comment