app.example.com { reverse_proxy container:8080
}
app.example.com { reverse_proxy container:8080
}
app.example.com { reverse_proxy container:8080
} - You run Docker Swarm or Kubernetes and want native integration
- You add and remove containers frequently and want zero-touch routing
- You need advanced middleware (circuit breakers, rate limiting, retries, mirroring)
- You want Prometheus metrics and distributed tracing out of the box
- You prefer config-as-code where routing lives with the container definition (labels)
- You manage multiple environments and want a single proxy to handle them all - You want the simplest possible reverse proxy setup
- You run a homelab with a fixed set of services
- Memory is limited (Raspberry Pi, low-spec VPS)
- You want to also serve static files (documentation sites, Hugo/Astro sites)
- You prefer a readable config file over Docker labels
- You want automatic HTTPS with zero configuration - How to Self-Host Traefik with Docker
- How to Self-Host Caddy with Docker
- Nginx Proxy Manager vs Traefik
- Nginx Proxy Manager vs Caddy
- Best Self-Hosted Reverse Proxy
- Reverse Proxy Explained
- Docker Compose Basics