Router HTTP – varnish

Jeśli masz jeden adres IP i potrzebujesz wystawić na świat strony z kilku serwerów za NATem (czyli vhosty nie wystarczą) – możesz użyć do tego varnisha.

Mi się zachciało takiej magii przy zabawie z OpenVZ. Na domowym łączu.

No, co do varnisha, to dobrze byłoby go najpierw zainstalować…

aptitude install varnish

Po instalacji edytujemy plik /etc/default/varnish. Zmieniamy START=no na yes, a w DAEMON_OPTS zmieniamy port z 6081 na 80, czyli “-a :6081” na “-a :80“.

Później do pliku /etc/varnish/default.vcl wrzucamy

backend default {
.host = “192.168.1.10”;
.port = “80”;
}

backend vps_1 {
.host = “192.168.1.151”;
.port = “80”;
}

backend vps_2 {
.host = “192.168.1.152”;
.port = “80”;
}

sub vcl_recv {

if (req.http.host ~ “^(.*)vps1.example.com”) {
set req.backend = vps_1;
return(pipe);
}
if (req.http.host ~ “^(.*)vps2.example.com”) {
set req.backend = vps_2;
return(pipe);
}

}

Konfiguracja ta powoduje, że żądania dla domeny (nagłówek host żądania http) vps1.example.com (a także cokolwiek.vps1.example.com etc) będą kierowane na backend vps_1, czyli adres 192.168.1.151.

Odpowiednio – dla domeny vps2.example.com na backend vps_2, czyli 192.168.1.152.

Backend default definiuje serwer, do którego będą przesyłane żądania niepasujące do żadnych reguł – czyli, w tym przypadku – połączenia dla domen innych niż vps1.example.com i vps2.example.com.

Po tym wystarczy zrestartować varnisha

service varnish restart

Działa. A przynajmniej powinno.

Leave a comment

Your email address will not be published. Required fields are marked *