Free course

Reverse Proxies and Load Balancers Course

Use Caddy to route HTTP traffic, terminate TLS, balance multiple backends, test failure behavior, and document every trust boundary.

5 modules · 25 lessons · No signup

Prerequisites: Shell Commands, Networking Foundations, HTTP, Node.js and TLS and Certificates

~~~

Your progress

of lessons completed.

Course completed.

What you'll learn

Run and operate a reverse proxy that routes requests, protects client identity, balances healthy backends, and fails predictably.

Take this course offline

Subscribe to my newsletter to get every free book and course in PDF and EPUB format.

Get the downloads

Course contents

  1. Proxy foundations

    Run two backends, put Caddy in front, and inspect the separate client and upstream exchanges.

    1. Run two backend services
    2. Run a one-command reverse proxy
    3. Write a Caddyfile
    4. Inspect forwarded headers
    5. Check your understanding: proxy foundations
  2. Routing and rewrites

    Route by path and host, change upstream paths deliberately, combine static files, and proxy WebSockets.

    1. Route by path
    2. Route by hostname
    3. Rewrite an upstream path
    4. Proxy a WebSocket
    5. Check your understanding: routing and rewrites
  3. TLS and trust boundaries

    Terminate local HTTPS, protect upstream TLS, and configure forwarded client identity safely.

    1. Terminate local HTTPS
    2. Use HTTPS upstreams
    3. Define trusted proxies
    4. Protect the backend path
    5. Check your understanding: tls and trust boundaries
  4. Load balancing

    Distribute requests, add health checks, bound retries, and understand stateful application behavior.

    1. Balance two upstreams
    2. Compare balancing policies
    3. Add health checks
    4. Bound retries and side effects
    5. Check your understanding: load balancing
  5. Operate the proxy

    Read logs, set deadlines, reload safely, test failover, and document the complete traffic path.

    1. Enable structured access logs
    2. Set upstream time bounds
    3. Reload configuration safely
    4. Run the final failover lab
    5. Check your understanding: operate the proxy