Black Friday närmar sig - säkra kampanjkapacitet och kontakta oss här

Enkla Varnish ACL

När man av någon anledning vill använda Varnish till sin sajt stöter man ofta på problem med rättigheter till t.ex. admingränsnitt. Ofta har man en /admin/ som man bara vill att vissa IP-adresser skall ha tillgång till.

Kör man Apache har man kanske en regel i .htaccess-filen som ser ut ungefär som:
<Directory /path/to/admin>
Order Deny,Allow
Deny from all
Allow from nnn.nnn.nnn.nnn
</Directory>

Men eftersom HTTP-förfrågan, för Apache, ser ut att komma ifrån samma IP-adress som Varnishservern så kommer ovanstående regel inte att fungera som väntat. En enkel lösning kan då vara att använda sig av ACL:er i Varnish. Börja med att definiera upp en ACL-lista:
acl admin {
"nnn.nnn.nnn.nnn";
"nnn.nnn.nnn.0"/24;
}

Sedan, på lämplig plats under vcl_recv:
if (req.http.url ~ "^/admin/") {
if (client.ip ~admin) {
return (pass);
} else {
error 405 "Access denied.";
}
}

Med detta kommer bara de med en IP-adress som finns i admin-acl:en att få tillgång till /admin, glöm inte att lägga till din Varnishservers IP-adress i Allow from bara!