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.