Caddy v2.11.9

Caddy is an open-source web server and reverse proxy designed to make modern HTTPS deployments simpler. Written in Go, it combines a web server, automatic TLS certificate management, reverse proxy, static file server, and extensible module system in a single application.

Its biggest differentiator is automatic HTTPS. When configured with a domain name, Caddy can obtain and renew certificates and redirect HTTP traffic to HTTPS without requiring the extensive certificate configuration often associated with traditional web servers.

Features

Caddy supports HTTP/1.1, HTTP/2, and HTTP/3, with modern protocols enabled by default. It can serve static websites and files, or act as a reverse proxy in front of applications and services.

The Caddyfile provides a relatively simple configuration syntax for common deployments, while Caddy's native JSON configuration and API provide considerably more control for advanced setups. Configuration adapters also allow other formats to be converted into Caddy's native configuration model.

The reverse proxy supports multiple upstreams, load balancing, active and passive health checking, retries, connection pooling, header manipulation, buffering, and different transport options. This makes Caddy capable of handling substantially more than a basic single-backend proxy.

Caddy's TLS system can automatically obtain publicly trusted certificates using supported ACME issuers, while its internal CA can be used for internal services and local development. It also supports features such as multi-issuer fallback and Encrypted ClientHello.

The architecture is highly modular. Caddy functionality is implemented through modules, allowing additional capabilities to be added without modifying the core application. The official project also provides an extensive plugin ecosystem.

Download Caddy v2.11.9 - Software Mirrors

Caddy v2.11.9 for Windows

caddy_2.11.9_windows_arm64.zip | 15.66 MB

caddy_2.11.9_windows_amd64.zip | 17.53 MB

Caddy v2.11.9 for macOS

caddy_2.11.9_mac_arm64.tar.gz | 16.37 MB

caddy_2.11.9_mac_amd64.tar.gz | 17.61 MB

Caddy v2.11.9 for Linux

caddy_2.11.9_linux_s390x.tar.gz | 16.54 MB

caddy_2.11.9_linux_s390x.deb | 16.57 MB

caddy_2.11.9_linux_riscv64.tar.gz | 16.32 MB

caddy_2.11.9_linux_riscv64.deb | 16.35 MB

caddy_2.11.9_linux_ppc64le.tar.gz | 15.61 MB

caddy_2.11.9_linux_ppc64le.deb | 15.64 MB

caddy_2.11.9_linux_armv7.tar.gz | 16.3 MB

caddy_2.11.9_linux_armv7.deb | 16.32 MB

caddy_2.11.9_linux_armv6.tar.gz | 16.32 MB

caddy_2.11.9_linux_armv6.deb | 16.34 MB

caddy_2.11.9_linux_armv5.tar.gz | 16.32 MB

caddy_2.11.9_linux_armv5.deb | 16.35 MB

caddy_2.11.9_linux_arm64.tar.gz | 15.59 MB

caddy_2.11.9_linux_arm64.deb | 15.61 MB

caddy_2.11.9_linux_amd64.tar.gz | 17.19 MB

caddy_2.11.9_linux_amd64.deb | 17.21 MB

Caddy v2.11.9 for BSD

caddy_2.11.9_freebsd_armv7.tar.gz | 16.22 MB

caddy_2.11.9_freebsd_armv6.tar.gz | 16.24 MB

caddy_2.11.9_freebsd_arm64.tar.gz | 15.51 MB

caddy_2.11.9_freebsd_amd64.tar.gz | 17.11 MB

Others Download related to Caddy v2.11.9

caddy_2.11.9_src.tar.gz | 11.82 MB

caddy_2.11.9_checksums.txt | 6.61 kB

caddy_2.11.9_buildable-artifact.tar.gz | 11.04 MB

Caddy v2.11.9 Source Code

Caddy v2.11.9 Source code (zip)

Caddy v2.11.9 Source code (tar.gz)

Caddy v2.11.9 Release Notes:

This is a quick follow-up on top of 2.11.8, to fix a regression it introduced and a few more security issues, mostly in FastCGI. It contains only fixes backported from master, plus a couple of small additions. If you're on 2.11.8 and serve PHP, we recommend upgrading. Huge thank you to our sponsors for keeping the project alive with resources, and for our maintainers who triage and assist tirelessly in this relentless new age of AI.

Highlights

  • Fixed: PHP directory indexes (regression in 2.11.8). A request for a directory with a trailing slash, like /wp-admin/, was matched by the directory itself instead of its index.php, so it never reached PHP and usually got a 404. This broke WordPress admin pages and other apps that serve an index through a trailing-slash URL. A try_files pattern now only matches a directory when it ends in /. Thanks @dunglas! (#8352)
  • Path matchers with placeholders now work as expected: placeholders like {env.FOO} are no longer lower-cased into {env.foo} before they're looked up, and their values are compared case-insensitively against the request path, like static patterns. Thanks @BenMacha! (#8343)
  • New plain_time_format option for file_server browse: sets the time layout of plain-text directory listings (Accept: text/plain). Thanks @steffenbusch! (#8084)
  • Fewer allocations in path cleaning, header rewriting and weighted_round_robin selection. Thanks @jvoisin! (#7842)
  • For plugin authors: new httpcaddyfile.Helper.IsNamedRoute() tells a directive whether it's being parsed inside a named route. (#8354)

:warning: Breaking changes

  • Conflicting client_auth is now a Caddyfile error. When two site blocks share TLS connection policies for the same hostname but set different client_auth, the adapter used to keep the first one and silently drop the other, which could quietly remove a stricter mTLS requirement. (#8306)
  • FastCGI requests that are ambiguous about which script they run get 400:
  • when the escaped path (which %-containing path matchers see) and the decoded path would select different scripts, e.g. /public/tool.php%2f..%2f..%2fadmin%2ftool.php (#8357)
  • on Windows, script paths with an 8.3 short name component (like ADMINI~1) or a : (NTFS alternate data streams) (#8356)
  • FastCGI env values now take precedence over request headers, so a client can no longer override HTTP_* variables you set with env (see below). (#8358)

Security fixes

Thank you to everyone who reported responsibly and helped with patches:
  • fastcgi: A client could override any HTTP_* variable set with the FastCGI transport's (or php_fastcgi's) env subdirective by sending a matching request header, for example choosing the user an application sees in HTTP_X_AUTH_USER. Configured values now win. Reported by @JebeenLee and @Camel4, fixed by @dunglas. (GHSA-q34h-28rj-5hjm, #8358)
  • fastcgi: On Windows, NTFS 8.3 short names and alternate data streams could run a script that a path rule was meant to deny, completing the FastCGI fix from 2.11.8. Thanks @dunglas. (GHSA-9cr8-wmhh-39pm, #8356)
  • fastcgi: Encoded slashes and dot segments could make a %-containing path matcher approve one script while another one runs. Thanks @dunglas. (#8357)
  • fastcgi: Over HTTP/2, a host field sent next to :authority could make the application see a different host (HTTP_HOST) than the one Caddy routed the request to. Thanks @dunglas. (#8355)
  • httpcaddyfile: A stricter client_auth could be silently dropped when merging TLS connection policies (see above). Thanks @sam-kota. (#8306)
  • Updated go-jose to v4.1.6 for GHSA-mgcc-cww5-fp2q. (#8299)
:warning: These security patches may be breaking if your application relies on the buggy behaviors. :rotating_light: Notice for Caddy plugin maintainers: Dependabot will probably alert you to the security fixes in Caddy and urge you to upgrade it in your go.mod file. Please ONLY upgrade the Caddy dependency if there's a change to an exported API your plugin uses.

What's Changed

  • caddyhttp: lower-case path patterns with placeholders at request time by @BenMacha in #8343
  • httpcaddyfile: reject conflicting client_auth when merging TLS policies by @sam-kota in #8306
  • build(deps): bump the actions-deps group across 1 directory with 10 updates by @dependabot[bot] in #8340
  • build(deps): bump github.com/go-jose/go-jose/v4 from 4.1.5 to 4.1.6 by @dependabot[bot] in #8299
  • fileserver: make plain-text browse time format configurable by @steffenbusch in #8084
  • fileserver: only match a dir when the pattern ends by / by @dunglas in #8352
  • httpcaddyfile: add Helper.IsNamedRoute by @dunglas in #8354
  • fastcgi: take HTTP_HOST from the routed host only by @dunglas in #8355
  • fastcgi: reject Win 8.3 aliases and alt data streams paths by @dunglas in #8356
  • caddyhttp: presize buffers in hot paths to reduce allocations by @jvoisin in #7842
  • fastcgi: let configured env variables override request headers by @dunglas in #8358
  • fastcgi: reject paths whose escaped form selects another script by @dunglas in #8357
Full Changelog: v2.11.8...v2.11.9

Performance and Compatibility

Caddy is written in Go and compiles for major platforms without requiring external runtime dependencies. It can be deployed directly as a binary, in containers, or through other supported installation methods.

Its performance is strong enough for production web serving and reverse-proxy workloads, while the configuration model is arguably its bigger advantage over traditional alternatives. A simple reverse proxy can be configured with only a few lines, while more complex deployments can use the JSON API and modular configuration system.

Caddy is particularly attractive for administrators who regularly deploy HTTPS services. Automatic certificate provisioning and renewal remove much of the routine TLS maintenance, while the same configuration can handle reverse proxying, static files, headers, compression, and other HTTP functions.

There is a learning curve once deployments move beyond simple Caddyfile configurations. Caddy's underlying JSON configuration and modular architecture are powerful, but understanding modules, matchers, handlers, transports, and adapters takes time.

For administrators migrating from Nginx or Apache, Caddy's configuration model is also substantially different. Existing configurations cannot simply be copied over, although Caddy provides configuration adapters for several formats.

System Requirements

  • Windows, Linux, macOS, or another supported platform

  • 64-bit or platform-appropriate Caddy binary

  • Network access for public certificate issuance and renewal when using publicly trusted HTTPS certificates

  • Ports 80 and 443 when using standard public HTTPS with automatic certificate management

  • Additional storage and resources depending on website, proxy, logging, and workload requirements

Pros and Cons

Pros

  • Automatic HTTPS and certificate renewal

  • HTTP/1.1, HTTP/2, and HTTP/3 support

  • Simple Caddyfile configuration

  • Powerful JSON configuration and API

  • Excellent reverse-proxy capabilities

  • Load balancing and health checking

  • Static file server

  • Highly extensible modular architecture

  • Cross-platform

  • No external runtime dependencies

  • Supports internal HTTPS with its own CA

  • Suitable for containers and modern infrastructure

  • Strong support for automated deployments

Cons

  • Configuration becomes more complex for advanced deployments

  • Different configuration model from Nginx and Apache

  • Large plugin ecosystem can make choosing extensions more complicated

  • Some advanced functionality requires understanding Caddy's module architecture

  • Automatic HTTPS still requires correct DNS and network configuration for public services

  • Migration from existing Nginx or Apache configurations requires rewriting the configuration

How to Install

Download the appropriate Caddy package for your operating system or use one of the supported installation methods.

For a basic HTTPS website, create a Caddyfile containing the domain and the desired handler. For example:

example.com {
    reverse_proxy localhost:9000
}

Run Caddy with the configuration file. If the domain resolves to the server and ports 80 and 443 are reachable, Caddy can automatically obtain and manage the TLS certificate.

For containerized deployments, Caddy can also be run as a Docker container with configuration and certificate storage mounted as persistent volumes.

Before deploying a configuration, caddy validate can be used to verify the configuration, while caddy reload allows configuration changes to be applied without stopping the running server.

Final Verdict

Caddy is one of the strongest choices for administrators who want a modern web server and reverse proxy without spending significant time managing TLS certificates.

Its automatic HTTPS is the standout feature, but the software offers considerably more than certificate automation. HTTP/3, load balancing, health checks, static file serving, API-driven configuration, and a powerful module architecture make it capable of handling serious production workloads.

Its main weakness is complexity at the advanced end. Caddy is extremely approachable for simple deployments, but administrators who need highly customized routing and modular behavior will need to learn its underlying configuration architecture.

For new deployments, especially reverse proxies and HTTPS services, Caddy offers an excellent balance of simplicity, automation, and production capability.

Caddy v2.11.9
Free
Software Informations:
Developer:

Operating System:
Windows / macOS / Linux / BSD
Date Added:
2026-11-05T10:31:54.665Z
Categories:

Post a Comment/Report Broken Link: