← Back to team overview

sslug-teknik team mailing list archive

Re: Squid med flere backend servere

 

In <20040712213030.79054420.jesper@xxxxxxxxxxxxxx> Jesper Lund <jesper@xxxxxxxxxxxxxx> writes:

>Hvis jeg nu har et maskine, som har EN offentlig IP. Men 2 websider på
>hver sin interne webserver. Eks. www.hans.dk på 192.168.1.3 og
>www.birte.dk på 192.168.1.2

>www.hans.dk og www.birte.dk peger begge i en offentlig DNS server på min
>squid server.

Så du bruger din Squid som en "reverse proxy" eller "accelerator".

>Hvor kan jeg læse om hvordan jeg får Squid til at forwarde www.birte.dk
>til den ene IP, og www.hans.dk til den anden IP ? Findes der ikke en
>slags tutorial, som hvis du vil det her, så går du sådan og sådan.

Du skal læse kapitel 20 i Squid FAQ'en, om "Accelerator mode".
http://www.squid-cache.org/Doc/FAQ/FAQ-20.html

Tricket er at bruge "httpd_accel_host virtual", og så lægge host-
navnene for de sites du har kørende på "back-end serverne" ind
i /etc/hosts med deres *lokale* adresser. Så i /etc/hosts
på din Squid vil du have

   192.168.1.2  www.birthe.dk
   192.168.1.3  www.hans.dk

Når Squid får en request for noget med "http://www.hans.dk/foo";, så
slår den "www.hans.dk" op med en "gethostbyname()", så for at få den
rigtige IP som den skal videresende requesten til er det afgørende
at det opslag virker. Enten skal du have de lokale adresser i din
DNS, eller også må du putte dem i /etc/hosts.

Dette er fra hukommelsen ... jeg har sat det op på arbejde men har
ikke lige konfig'en her. Der skal selvfølgelig også laves acl'er
som tillader at man accesser disse URL'er udefra. Men prøv at
rode lidt med det, og hvis du løber hovedet mod muren må du sige
til igen.


Henrik

PS: Dette virker kun med almindelig http, ikke https. Hvis man kører
https (SSL) er det faktisk ikke muligt at have to forskellige sites
kørende på een IP-adresse, fordi certifikatet som indeholder navnet
på sitet skal udveksles inden requesten som fortæller hvilket site
man vil besøge. Catch-22.
-- 
Henrik Storner


References