Home Infrastructure Field Notes · intermediate

One Ingress Is Easier to Reason About Than Three

Every extra reverse proxy adds another place for routing, TLS and headers to disagree.

Current. Published as a first-person engineering field note from verified hands-on domains; no client-confidential details.

One Ingress Is Easier to Reason About Than Three

Every extra reverse proxy adds another place for routing, TLS and headers to disagree.

I keep this as a field note because the failure mode is easy to misclassify: services accumulate multiple reverse proxies with unclear hostname ownership. The useful move is to identify the boundary first, then change only the layer that owns it.

What I model

The system is easier to debug when intent, observation and transport are not collapsed into one state. For this case, my rule is simple: Prefer one canonical ingress boundary unless a second one has a documented isolation reason.

Implementation pattern

Map each hostname to exactly one ingress owner and keep application containers on internal ports.

I prefer a small explicit contract over a clever implicit one. That gives logs, tests and dashboards something concrete to verify and keeps unrelated layers from compensating for each other.

What I verify

  • each hostname has one owner
  • TLS termination is known
  • public ports are intentional

Failure handling

When one of those checks fails, I preserve the failing evidence before restarting or changing configuration. The first broken contract determines the next investigation. That keeps troubleshooting causal instead of turning it into a sequence of guesses.

What I keep

Prefer one canonical ingress boundary unless a second one has a documented isolation reason. The specific tools can change, but that ownership boundary remains useful across firmware, networks and infrastructure.

Quick navigationEsc