Learn

Reverse proxy: the front desk for your services

A reverse proxy is a server that sits in front of one or more backend services, receives every incoming request, and forwards it to the right backend, returning the response. It is the natural place to handle encryption, name-based routing, and access rules once, so each service behind it does not have to.

At a glance

What it is
A front-facing server that routes requests to backends
Why use one
One place for TLS, routing, and access in front of many services
Forward versus reverse
A forward proxy fronts clients going out; a reverse proxy fronts servers receiving
Common tools
Caddy and nginx are widely used reverse proxies
Flow

One front door, many services

Every request lands on the reverse proxy first. It decides, by name or path, which backend should answer, and only that backend ever sees the request.

1
Requests from the internet all arrive at one public address
2
Reverse proxy terminates TLS and routes by name or path
3
Backend services each answers only what it should

What does a reverse proxy do?

A reverse proxy is the front desk. Every request from the outside arrives at it first, and it decides which service in the back should answer, then hands the response back to the caller. The visitor only ever talks to the proxy; the real services sit behind it, often on a private network, never exposed directly.

That single choke point is the whole value. Because all traffic passes through one place, that one place is where you do the cross-cutting work: terminate TLS and serve the certificate, route by name or path so several services share one public address, apply access rules and rate limits, and write one coherent log. The services behind it can stay plain, each doing its own narrow job.

How is it different from a forward proxy?

The names confuse people. A forward proxy sits in front of clients going out: it fronts the people making requests, often to filter or anonymise their outbound traffic. A reverse proxy sits in front of servers coming in: it fronts the machines receiving requests. Same idea of a middleman, opposite direction.

For self-hosting, the reverse proxy is the one you reach for constantly. It is how you put a clean, encrypted public face on a set of services that, behind it, are just processes listening on local ports. It routes; it does not filter the network like a firewall, and it does not resolve names like DNS. It is the front desk, and it does the front desk’s job well.

A reverse proxy is good for

  • Handling TLS once for every service behind it
  • Routing several names or paths to different backends
  • Hiding internal services behind a single public address
  • Adding access rules, rate limits, and logging in one spot

A reverse proxy is not for

  • Doing the application's actual work; it only routes
  • Replacing a firewall; it routes, it does not filter the network
  • Resolving names; that is DNS, a step before it
  • Making a slow backend fast on its own

Related terms

← All terms Reviewed: June 2026