All posts

The simplest way to make Caddy Zscaler work like it should

Picture this: the app runs fine locally, the reverse proxy is clean, but the minute someone on a corporate laptop tries to reach it through Zscaler, everything turns into a Kafka novel. Authentication loops, broken headers, and mystery TCP resets. This is where making Caddy and Zscaler actually cooperate saves your sanity. Caddy handles TLS, routing, and automatic certificates with charm. Zscaler enforces corporate network and identity policies at global scale. Alone, each is strong. Together,

Free White Paper

End-to-End Encryption + Sarbanes-Oxley (SOX) IT Controls: The Complete Guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free. No spam. Unsubscribe anytime.

Picture this: the app runs fine locally, the reverse proxy is clean, but the minute someone on a corporate laptop tries to reach it through Zscaler, everything turns into a Kafka novel. Authentication loops, broken headers, and mystery TCP resets. This is where making Caddy and Zscaler actually cooperate saves your sanity.

Caddy handles TLS, routing, and automatic certificates with charm. Zscaler enforces corporate network and identity policies at global scale. Alone, each is strong. Together, they can create a perfect handshake between internal security and developer autonomy—if you line up the trust boundaries correctly.

The key is understanding who speaks for whom. Caddy terminates TLS at the edge or on-prem. Zscaler inserts identity, DLP, and traffic inspection in between. Once you accept that both want to be gatekeepers, the trick is assigning the right responsibilities. Let Zscaler own user identity and inspection. Let Caddy handle origin trust and backend routing.

Integration starts by aligning identity. Use Zscaler to authenticate through your SSO provider (Okta, Azure AD, or Google Workspace) and pass validated headers downstream. Caddy consumes these headers to map the verified identity to permissions or upstream paths. No shared secrets to rotate, no hardcoded API keys, just clean OIDC-aligned claims traveling through managed layers.

How do I connect Caddy and Zscaler securely?

Run Caddy behind Zscaler’s outbound proxy or private access connector. Configure trusted IPs or headers so Caddy only trusts authenticated traffic. Keep TLS mutual trust scoped tightly; certificate pinning helps. Update your policies whenever identity groups shift, not just when servers do. One misplaced wildcard in Zscaler can expose an entire dev environment.

Continue reading? Get the full guide.

End-to-End Encryption + Sarbanes-Oxley (SOX) IT Controls: Architecture Patterns & Best Practices

Free. No spam. Unsubscribe anytime.

Best practices that save hours later

  • Use short TTL certificates and let Caddy renew automatically.
  • Map group membership to route-level ACLs instead of manual files.
  • Log identity context in access logs for clear audit trails.
  • Avoid double encryption scenarios; pick one TLS termination layer.
  • Rotate service accounts quarterly, even if nothing “changed.”

Once configured, something magical happens: developers stop fighting proxies and network teams stop chasing broken routes. Approval chains shrink. Debugging shifts from “Who blocked this?” to “Why did we intend to block this?” That’s healthy.

Platforms like hoop.dev turn those policy definitions into automated guardrails. They treat Caddy and Zscaler as composable but policy-aware layers, enforcing access decisions in real time without endless configuration drift.

AI assistants and copilots can now safely read internal docs or APIs without leaking credentials because the identity checks happen upstream, not in prompts. Each generated request inherits the same enforced boundary as a human engineer.

In the end, Caddy Zscaler done right is less about tools and more about clarity. One enforces security, the other delivers it efficiently. Together they create frictionless, identity-rich networking that your future self will thank you for.

See an Environment Agnostic Identity-Aware Proxy in action with hoop.dev. Deploy it, connect your identity provider, and watch it protect your endpoints everywhere—live in minutes.

Get started

See hoop.dev in action

One gateway for every database, container, and AI agent. Deploy in minutes.

Get a demoMore posts