acl whitelist_geo { "13.13.22.30"; "123.39.96.0"/24; } acl geo_to_au { "1.1.22.30"; "133.29.93.0"/30; } sub vcl_recv { # section.io Edge node automatically performs GEO IP (and city) lookup on every request. # We create a request header called "section-io-geo-country" that you can leverage # Force IP addresses from ACL to AU if((std.ip(req.http.True-Client-IP, "0.0.0.0") ~ geo_to_au) { # Australia and New Zealand #return (synth(802, "https://www.domain.com.au/")); } # Only GEO redirect if IP address is not in whitelist ACL if(!(std.ip(req.http.True-Client-IP, "0.0.0.0") ~ whitelist_geo) { if (req.http.section-io-geo-country ~ "^(AU|NZ)$") { # Australia and New Zealand #return (synth(802, "https://www.domain.com.au/")); } else if (req.http.section-io-geo-country ~ "^(US|CA|MX)$") { # US, Canada and Mexico #return (synth(802, "http://www.domain.com/")); } else { # UK and the rest of the world #return (synth(802, "http://www.domain.co.uk")); } } } sub vcl_synth { if (resp.status == 802) { set resp.http.Location = resp.reason; set resp.status = 302; return (deliver); } }