SQUID reverse proxy

Intro

Stel je hebt een (of meerdere) webservers en je wilt deze ontlasten door squid ervoor te zetten.
Vooral met een database, wat meestal MySQL is, kan je veel winst boeken in snelheid als je met een proxy werkt.
Squid is een goede oplossing,
Als je gebruik maakt van directadmin dan heb je altijd meerdere sites op 1 ipnummer of in ieder geval op 1 server. Squid stel je dan in zodat hij gebruik maakt van meerdere web servers.

Reverse proxy

Reverse proxy

Hoe werkt het
Een reverse proxy wordt geplaatst tussen het internet en de web server(s)
Wanneer een browser een HTTP request maakt, zal de DNS de browser het ipnummer geven van de reverse proxy en niet de werkelijke web server(s). De reverse proxy zal zijn eigen cache checken of de aangevraagde item. Zoniet dan maar de reverse proxy een verbinding naar de echte web server en download de aangevraagde item. Dit net gedownloade item zal meteen in de disk cache van de reverse proxy neergezet worden en terug gegeven worden aan de browser.
De reverse proxy kan alleen maar paginas en items in zijn cache zetten zoals HTML paginas en plaatjes.
Dynamische inhoud zoals cgi scripts kunnen niet in de cache gezet worden. The reverse proxy cached alleen statische pagina’s gebaseerd op HTTP header tags die meegegeven worden met een web pagina.

Reverse proxy 2

Reverse proxy 2

De vier belangrijkste header tags zijn:

  • Last-Modified: Vertelt de proxy wanneer de pagina het laast verandert is.
  • Expires: Vertelt de proxy wanneer de pagina uit de cache gehaald kan worden.
  • Cache-Control: Vertelt de proxy of de pagina in de cache gezet moet worden.
  • Pragma: Vertelt de proxy ook of de pagina in de cache gezet moet worden.

Config reverse proxy voor meerdere web servers of vhosts

Reverse proxy 3

Reverse proxy 3


Om Squid in te stellen moet je in de config file wat meestal deze is /etc/squid/squid.conf de volgende regels bovenaan toevoegen.

http_port 3128
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_single_host off
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
http_access allow all

Als je squid herstart dan kan je een verbinding maken met :3128 om te testen of je een reactie krijgt.
Gaat dat allemaal goed dan kan je met een simpele firewall regel all het verkeer wat op poort 80 eth0 binnen komt redirecten naar poort 3128.

iptables -t nat -A PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-port 3128

Nu moet all het verkeer door squid gaan.

Laat een reactie achter