Een proxy server is een server die webverzoeken doorstuurt. Als je via een proxy server met het web verbindt, plaats je al jouw webverzoeken in eerste instantie bij de proxy server, welke het verzoek vervolgens bij de website zelf plaatst. De server van de site zal de gevraagde content terug sturen naar de proxy, die de gegevens vervolgens naar jouw computer terug stuurt.

In dit artikel leggen we wat een (reverse) proxy server is en geven we twee voorbeelden van reverse proxy servers; CDN en Varnish.

Voordelen van een proxy server

afb.1 Een normaal webverzoek zonder proxy server

afb.2 Proxy server configuratie

Het gebruik van een proxy server heeft een aantal voordelen. De proxy server zal in sommige gevallen gegevens tijdelijk opslaan (cachen), zodat als je een site bezoekt die een andere gebruiker van de proxy (of jij zelf) al eerder bezocht heeft, bepaalde content door de proxy server gelijk opgestuurd kan worden zonder op de echte webserver te hoeven wachten. Daarnaast is browsen via een proxy server anoniemer dan direct browsen, omdat de uiteindelijke site alleen contact met de proxy server heeft, en geen verbinding met jou maakt.

Reverse Proxy Server

Een reverse proxy werkt net iets anders, het is ook een doorgeefluik maar een reverse proxy zal in principe alle webverzoeken bij één (doel)webserver plaatsen. Dat is in bepaalde toepassingen erg handig, waarvan we er twee gaan omschrijven; CDN en Varnish.

afb.3 Reverse proxy server

CDN

Het CDN of Content Delivery Network is een (aantal) reverse proxy server(s). Het enige wat ze doen is verzoeken voor statische content doorsturen en de gegevens opslaan (cachen). In de meest gebruikte configuraties voor CDN, doet deze bij het eerste webverzoek niet mee. Byte.nl zal bijvoorbeeld gewoon bij de webserver voor byte.nl opgevraagd worden en dat is maar goed ook want de reverse proxy server kan in principe geen PHP berekenen, het is slechts een doorgeefluik.

De webserver van byte.nl zal vervolgens antwoorden met een html bestand waarin afbeeldingen, stylesheets en andere statische content staan, die perfect van het CDN gehaald kunnen worden. Hiervoor wordt een andere domeinnaam gebruikt, bijvoorbeeld cdn.byte.nl. De reverse proxy server achter cdn.byte.nl weet dat een verzoek voor cdn.byte.nl/afbeelding.jpg bij byte.nl/afbeelding.jpg geplaatst moet worden op het moment dat hij deze afbeelding nog niet eerder opgehaald heeft. In de volgende afbeeldingen gaan we er vanuit dat de proxy server de gegevens waarom gevraagd wordt al een keer opgehaald heeft.

afb.4 CDN Configuratie

Varnish

Varnish is een slimmere reverse proxy server dan het CDN. In principe staat Varnish als de ontvangende webserver ingesteld. Dit betekent dat elke bezoeker voor een site in een Varnish configuratie in eerste instantie bij de Varnish server terecht komt. Varnish heeft slimme mechanismes waarmee hij niet alleen controleert of hij de pagina al eerder opgeslagen heeft, maar ook checked of er misschien informatie op de pagina staat die persoonlijk voor de gebruiker zijn. Zo voorkomt Varnish dat hij (bijvoorbeeld) een winkelwagen van een bezoeker cached en deze vervolgens aan alle bezoekers van die pagina toont.

afb.5 Varnish Configuratie
447