Reverse proxies worden gebruikt als tus­sen­lig­gen­de net­werk­com­po­nent om servers van openbare online diensten te be­vei­li­gen. Ze ac­cep­te­ren ser­ver­ver­zoe­ken namens de servers en sturen deze door naar de ge­brui­kers.

Hoe werkt een reverse proxy?

In wezen fungeert een proxy­ser­ver als een com­mu­ni­ca­tie-tus­sen­per­soon in het netwerk, die verzoeken ontvangt en deze namens de client doorgeeft aan een doel­ser­ver. Een reverse proxy bevindt zich tussen clients (bij­voor­beeld web­brow­sers) en backend-servers (bij­voor­beeld web­ser­vers, da­ta­ba­se­ser­vers of ap­pli­ca­ties). Deze wordt ge­ac­ti­veerd wanneer een client een verzoek indient en bepaalt of en naar welke interne ser­ver­com­po­nent het verzoek moet worden door­ge­stuurd. Het proces verloopt in vier ba­sis­stap­pen:

  1. Ontvangst van het verzoek van de klant: De reverse proxy ac­cep­teert HTTP-, HTTPS- of andere verzoeken, zoals FTP of WebSocket.
  2. Ana­ly­se­ren van het verzoek: De proxy con­tro­leert of het verzoek geldig is, of het vei­lig­heids­ri­si­co’s met zich meebrengt en of er een ca­che­ver­sie be­schik­baar is.
  3. Door­stu­ren naar de juiste server: Als het verzoek niet vanuit de cache kan worden be­ant­woord, stuurt de reverse proxy het verzoek naar een van de interne servers.
  4. Reactie naar de client: De reverse proxy ontvangt de reactie van de backend-server, verwerkt deze indien nodig verder (bijv. ver­sleu­te­ling) en stuurt deze terug naar de aan­vra­gen­de client.
Afbeelding: Schematic representation of a reverse proxy
Reverse proxy and web server are located in a shared internal network

Wat is het verschil met forward proxies?

Terwijl reverse proxies, zoals eerder vermeld, tussen clients en backend-servers worden geplaatst, bevinden forward proxies zich tussen clients en het internet. Een forward proxy ka­na­li­seert alle client­ver­zoe­ken en stuurt deze met zijn eigen af­zen­der­adres door naar de doel­ser­vers op het internet. Ser­ver­re­ac­ties komen ook eerst bij de proxy terecht voordat ze naar de res­pec­tie­ve clien­t­ap­pa­ra­ten worden gestuurd. Deze blijven anoniem, tenzij het een trans­pa­ran­te proxy betreft. Terwijl een forward proxy clients in het interne netwerk beschermt tegen externe be­drei­gin­gen, beveiligt een reverse proxy servers in een openbaar netwerk en op­ti­ma­li­seert deze hun toe­gan­ke­lijk­heid.

Terwijl reverse proxies dui­de­lij­ke voordelen bieden voor ser­ver­struc­tu­ren door middel van functies zoals load balancing en ver­schil­len­de be­vei­li­gings­func­ties, liggen de sterke punten van forward proxies in de be­scher­ming van de client.

Afbeelding: Schematic representation of a forward proxy
Unlike a reverse proxy, the forward proxy is located in a shared internal network with the clients.

Toe­pas­sings­ge­bie­den voor reverse proxies

Door client­ver­zoe­ken te bundelen, kunnen reverse proxies het inkomende verkeer nauw­keu­rig con­tro­le­ren. Dit maakt het onder andere mogelijk om meerdere servers onder dezelfde URL aan te bieden, verzoeken ge­lijk­ma­tig over ver­schil­len­de servers te verdelen en het ophalen van gegevens te ver­snel­len door middel van caching. Hieronder staan de be­lang­rijk­ste toe­pas­sings­ge­bie­den voor een reverse proxy­ser­ver.

Load balancing

Een reverse proxy die vooraan wordt geplaatst, maakt het mogelijk om een URL te koppelen aan ver­schil­len­de servers in het privé-netwerk. Hierdoor worden inkomende verzoeken over meerdere servers verdeeld. Deze load balancing voorkomt over­be­las­ting van in­di­vi­du­e­le systemen en com­pen­seert bij storingen. Als een server on­be­reik­baar is vanwege hardware- of soft­wa­re­fou­ten, verdeelt de load balancing-module van de proxy de inkomende verzoeken over de overige servers. Dit zorgt ervoor dat de ser­ver­ser­vi­ces ook tijdens storingen be­schik­baar blijven.

Caching

Om ser­ver­ser­vi­ces te ver­snel­len, kunnen reverse proxies een functie bieden waarmee veel­ge­vraag­de content in de cache kan worden op­ge­sla­gen. Door deze caching kan de proxy­ser­ver herhaalde verzoeken geheel of ge­deel­te­lijk zelf­stan­dig be­ant­woor­den. Statische inhoud zoals af­beel­din­gen of CSS-sty­les­heets worden op­ge­sla­gen in de cache van de proxy. Hierdoor hoeft er weinig tot geen data te worden opgehaald van de backend-server, wat de toe­gangs­snel­heid tot web­ser­vi­ces aan­zien­lijk versnelt. Omdat snel ver­an­de­ren­de inhoud echter niet altijd ga­ran­deert dat de cache van de proxy de huidige versie bevat, bestaat het risico dat ver­ou­der­de in­for­ma­tie wordt geleverd aan ver­zoe­ken­de clients.

Be­scher­mings- en vei­lig­heids­maat­re­ge­len

Een reverse proxy fungeert als een soort schild voor de backend-servers en kan in deze rol ver­schil­len­de be­vei­li­gings­func­ties bieden:

  • DDoS-be­scher­ming: Reverse proxies kunnen verdacht of ongewoon hoog verkeer tijdens DDoS-aanvallen de­tec­te­ren en blokkeren voordat het de backend-servers bereikt.
  • Web Ap­pli­ca­ti­on Firewall (WAF): Veel reverse proxies bevatten een WAF die kwaad­aar­di­ge verzoeken zoals SQL-injecties of Cross-Site Scripting (XSS) kan filteren.
  • IP-whi­te­lis­ting en blac­k­lis­ting: De reverse proxy kan bepaalde IP-adressen blokkeren of indien nodig alleen ver­bin­din­gen van spe­ci­fie­ke netwerken toestaan.
  • Verbergen van backend-servers: De reverse proxy voorkomt dat de interne IP-adressen van de backend-servers openbaar zichtbaar zijn, waardoor aanvallen moei­lij­ker worden.

Ver­sleu­te­ling

Om de belasting van backend-servers te ver­min­de­ren, kunnen ook reverse proxy-servers worden gebruikt voor ver­sleu­te­ling. In dit geval wordt het SSL/TLS-verzoek van de client (bij­voor­beeld een HTTPS-ver­bin­ding) ont­sleu­teld, worden de ont­sleu­tel­de gegevens door­ge­stuurd naar de backend-servers en wordt het bij­be­ho­ren­de antwoord opnieuw ver­sleu­teld te­rug­ge­stuurd naar de client. De interne com­mu­ni­ca­tie kan zowel ver­sleu­teld als on­ver­sleu­teld plaats­vin­den.

Ano­ni­mi­se­ring

Een reverse proxy kan ook worden gebruikt om verkeer te ano­ni­mi­se­ren door de oor­spron­ke­lij­ke IP-adressen van de clients te maskeren of te vervangen door zijn eigen IP-adressen. Dit helpt de privacy van de clients te be­scher­men, aangezien de wer­ke­lij­ke IP-adressen niet zichtbaar zijn in de log­be­stan­den. Bovendien maakt dit geo-load balancing mogelijk: verzoeken kunnen worden door­ge­stuurd naar de dichtst­bij­zijn­de server, af­han­ke­lijk van de ge­o­gra­fi­sche locatie van de gebruiker.

Com­pres­sie

Met de juiste software kan een reverse proxy worden gebruikt om inkomende en uitgaande gegevens te com­pri­me­ren. Een populair programma voor het com­pri­me­ren van websites is gzip, dat vaak wordt gebruikt in com­bi­na­tie met de web­ser­vers Apache of NGINX.

Ga naar hoofdmenu