Een reverse proxy is een server die vóór je applicatieservers staat en het inkomende verkeer namens hen afhandelt. De browser van een bezoeker maakt verbinding met de reverse proxy, en die bepaalt welke backendserver moet antwoorden en geeft het antwoord daarna terug. De backend blijft verborgen voor de buitenwereld.

Zie het als een receptioniste in een groot kantoor. Bezoekers dwalen niet zelf door de gangen op zoek naar de juiste persoon. Ze melden zich bij de balie, en de receptioniste wijst ze de juiste kamer, weert wie er niet hoort te zijn en houdt het pand veilig. Een reverse proxy speelt die rol voor webverkeer, en wordt vaak gebouwd met Nginx of draait via een dienst als Cloudflare.

Naast routeren kan een reverse proxy HTTPS afhandelen, veelgevraagde antwoorden cachen om de backend te ontlasten, en als load balancer over meerdere machines fungeren. Zo wordt het één handige plek om regels af te dwingen. Wil je rate limiting toevoegen zodat één client je niet kan platgooien met verzoeken? Dat stel je één keer in op de proxy. Wil je verkeer uit een bepaalde regio blokkeren, of de backend vervangen zonder het publieke adres te wijzigen? Zelfde plek. Hier zit ook het verschil met een forward proxy, waar mensen het vaak mee verwarren. Een forward proxy staat vóór de gebruikers en verbergt hen voor het bredere internet, zoals een bedrijfsnetwerk al het personeel via één gateway kan leiden. Een reverse proxy staat vóór de servers en verbergt die juist voor de gebruikers. De twee kijken dus de tegenovergestelde kant op, ook al sturen ze allebei verkeer door namens iemand anders.

Bij TopDevs zetten we een reverse proxy vóór de apps die we hosten, zodat we beveiliging, caching en routering kunnen toevoegen zonder ook maar één regel applicatiecode aan te passen.