DOM: DATA_INFRASTRUCTURE
Journal
Systems ArchitectureInfrastructure EngineeringEssayArchitecture of Information SystemsInfrastructure · Part 12

Why Reverse Proxies Are Non-Negotiable Passports

Why modern applications should never be exposed directly to the Internet.

5 min read·2026
Contents

Why Reverse Proxies Are Non-Negotiable Passports

Why modern applications should never be exposed directly to the Internet.


In the previous article, we explored how something as simple as an identifier can influence database performance.

UUIDs.

B-Trees.

Page splits.

Disk topology.

The lesson was that physical systems care about details we often treat as abstractions.

Infrastructure follows the same pattern.

Most developers think about applications.

Controllers.

Business logic.

Database queries.

But before a request reaches any of those components, it encounters another system entirely.

A gatekeeper.

A checkpoint.

A passport control desk for the Internet.

The reverse proxy.


The Dangerous Architecture

Most software projects begin with a diagram that looks something like this:

User
  ↓
Application
  ↓
Database

It works perfectly during development.

A browser connects directly to a local server.

The application responds.

Everything appears simple.

Then production arrives.

The public Internet enters the picture.

And suddenly simplicity becomes exposure.


The Internet Is Not a Friendly Place

A production application receives far more than legitimate requests.

Bots arrive.

Scanners arrive.

Malformed requests arrive.

Credential stuffing attacks arrive.

Traffic spikes arrive.

Occasionally, malicious actors arrive.

The application now faces a challenge it was never designed to solve.

Not business logic.

Traffic management.

This distinction matters.

Because applications are optimized for processing requests.

Not defending themselves from them.


The Missing Layer

This is where reverse proxies enter the architecture.

Tools such as:

  • Nginx
  • Caddy
  • HAProxy
  • Envoy

sit between the Internet and the application.

Instead of:

Internet
    ↓
Application

the architecture becomes:

Internet
    ↓
Reverse Proxy
    ↓
Application

At first glance this appears redundant.

Why add another component?

The answer is the same reason airports have passport control.

Not every request should be allowed to proceed without inspection.


Routing Is a Responsibility

Imagine a machine hosting:

  • An API
  • A frontend application
  • Internal services
  • Static assets

All sharing the same public endpoint.

A reverse proxy determines where traffic should go.

api.company.com
       ↓
    API

app.company.com
       ↓
 Frontend

assets.company.com
       ↓
Static Files

The application never performs this routing.

The edge gateway does.

Traffic arrives.

Rules are evaluated.

The request is directed appropriately.

The application remains focused on application concerns.


TLS Should Not Be an Application Problem

Earlier in this series we explored TLS handshakes.

Certificates.

Trust establishment.

Encryption.

These responsibilities are important.

They are also operational concerns.

Most modern architectures terminate TLS at the reverse proxy.

The proxy manages certificates.

The proxy handles renewal.

The proxy performs negotiation.

The application receives already-secured traffic.

This separation reduces complexity.

The application does not need to become a cryptographic endpoint.


The Slow-Loris Problem

One of the most fascinating denial-of-service attacks is the Slow Loris attack.

The attack does not flood a server with traffic.

It does the opposite.

Connections are opened extremely slowly and deliberately kept alive.

The objective is simple.

Consume connection capacity.

Starve legitimate users.

This attack is particularly effective against runtimes that allocate resources per connection.

And many modern application servers are surprisingly vulnerable.

The application may never receive enough information to process a request.

Yet resources remain occupied.

The server slowly suffocates.


Why Single-Threaded Runtimes Need Protection

Consider a Node.js application.

Node's event loop is remarkably efficient.

Under normal conditions.

But it was never intended to function as the first line of defense against the public Internet.

Every unnecessary connection still consumes resources.

Every slow request still occupies attention.

Every malicious interaction still competes with legitimate traffic.

The reverse proxy absorbs much of this burden.

Connections can be limited.

Timeouts can be enforced.

Traffic can be filtered.

The runtime remains focused on useful work.


Static Files Should Not Wake Up Your Application

Another surprisingly common inefficiency appears when applications serve static content themselves.

Images.

JavaScript bundles.

Stylesheets.

Fonts.

Documentation.

These files rarely require application logic.

Yet many architectures force the runtime to participate anyway.

The result is wasteful.

Application resources become occupied serving content that never needed application processing.

Reverse proxies solve this elegantly.

Static assets are delivered directly from the edge.

The runtime remains available for actual computation.


Protecting Expensive Resources

The deeper purpose of a reverse proxy is resource protection.

Application runtimes are expensive.

Database connections are expensive.

Business logic execution is expensive.

Every unnecessary request consumes capacity.

The reverse proxy acts as a filter.

Requests that should not reach the application never reach the application.

Requests that should not reach the database never reach the database.

The edge absorbs the noise.

The core remains protected.


The Architectural Firewall

Many teams think of reverse proxies as networking tools.

They are more accurately architectural tools.

They enforce separation.

The Internet remains outside.

Applications remain inside.

Traffic crosses a controlled boundary.

This pattern should feel familiar.

Throughout this series we have repeatedly separated responsibilities:

  • Operational systems from analytical systems
  • Business models from vendor schemas
  • State from compute
  • Applications from networking concerns

Reverse proxies continue the same philosophy.

Isolation creates stability.


A More Important Lesson

This article is not really about Nginx.

Nor is it about Caddy.

It is about trust boundaries.

Healthy architectures carefully control how external traffic enters the system.

The Internet is unpredictable.

Applications prefer predictability.

The reverse proxy exists to reconcile those realities.

It creates a checkpoint between external chaos and internal order.

And in doing so, it becomes one of the most important components in modern infrastructure.


Looking Ahead

Over the past twelve articles, this series has steadily peeled away layers of abstraction.

We started with dashboards and analytical systems.

Then moved through business models, data pipelines, memory management, network transport, operating systems, storage engines, and edge infrastructure.

The journey has revealed a recurring pattern:

Every abstraction eventually collides with a physical constraint.

Databases collide with storage.

Applications collide with networks.

Runtimes collide with memory.

Distributed systems collide with latency.

The underlying mechanics matter because they shape what architectures can realistically achieve.

But understanding constraints is only half the story.

The next phase of this series changes direction.

Instead of continuing downward through the stack, we begin building upward again.

How should analytical platforms be designed once we understand their underlying realities?

How do we prevent dashboards from becoming products without purpose?

How do we move data efficiently across execution boundaries?

How do we handle backpressure, recovery, caching, and operational intelligence?

And ultimately:

What does a mature information system actually look like?

That is where we go next.


Part 12 of the Architecture of Information Systems series.

Continue Exploring

Systems ArchitectureInfrastructure EngineeringEssayInfrastructure · 10

The Four-Tuple That Governs the Internet

Why every network connection eventually becomes four numbers and an operating system problem.

Discussion

Thoughtful disagreement, extensions, critiques, and questions are encouraged.