@mholt mholt released this Jul 19, 2016 · 926 commits to master since this release

After more than 6 months since 0.8, I'm very pleased to release Caddy 0.9! We've got a whole lot of improvements here, including some breaking changes, so pay attention before pushing into production. Please see the blog post for more information.

Notable changes are an entirely new core, new plugin model, ACME DNS challenge support, experimental QUIC support, in-process graceful restarts, easy self-signed certificates, and major code refactoring.

Hope you like it. Stay tuned for any patch releases and please report bugs! Also, a huge thanks to all contributors who made this possible.

Note: Some plugins that were available for earlier versions of Caddy are not yet available with Caddy 0.9 because they have not been updated to be compatible with version 0.9. We have a wiki page for plugin authors about how to do this. I know that's annoying; sorry for the inconvenience.

Known issues: #941 is about a deadlock when calling caddy.Stop() and #943 is about setting TLS protocol versions. #916 relates to headers not being set properly in proxy situations. All are already fixed on master.

Full change log:

  • New core
  • New experimental QUIC support with -quic flag (HTTPS only)
  • New -type option to specify other server types
  • Moved ~/.caddy/letsencrypt to ~/.caddy/acme and reorganized assets
  • Moved caddy package to top level folder, and pushed main to subfolder
  • New {request} placeholder to dump entire request (without body)
  • New {hostonly} placeholder for only hostname portion of host value
  • Site addresses can have paths
  • Site addresses can make some use of wildcards in domains
  • Renamed -directives flag to -plugins
  • Restarting no longer requires spawning a new process
  • Removed -restart option
  • fastcgi: Env variables now support placeholders
  • import: Import paths now relative to Caddyfile, not current working dir
  • markdown: Overhauled; removed site generation features
  • proxy: More control of headers; deprecating proxy_header subdirective
  • proxy: Specify multiple upstreams with optional port ranges
  • proxy: New preset 'transparent' to simplify common pass-thru headers
  • proxy: Chooses longest matching path; order declared is irrelevant
  • redir: Added if and if_op subdirectives to make conditional redirects
  • rewrite: Support for if_op to change how conditions are evaluated
  • tls: Generate self-signed certificates in memory
  • tls: Support for ACME DNS challenge with 10 providers
  • tls: Support for TLS-SNI challenge during restarts
  • Various bug fixes and enhancements
Assets 17