config | ||
middleware | ||
server | ||
.gitignore | ||
main.go | ||
README.md |
Meet caddy
Caddy is a web server for your files like Apache, nginx, or lighttpd, but with different goals, features, and advantages.
Note: This software is pre-1.0. Don't use it in production (yet).
Features
- SSL (TLS)
- Gzip
- FastCGI (yes, it can serve PHP sites)
- Logging
- Rewrite
- Redirect
- Extensionless (clean) URLs
- Multi-core
- Custom headers
Caddy is designed to be super-easy to use and configure.
Run Caddy
- Download or build it
cd
into a directory you want to serve./caddy
Caddy will, by default, serve the current working directory on http://localhost:8080 (the default port will change before version 1.0).
Configuring Caddy
If the current directory has a file called Caddyfile
, it will be loaded and parsed and used as configuration. To configure Caddy, use a Caddyfile.
A Caddyfile always starts with the address to bind to. The rest of the lines are configuration directives. Here's an example:
mydomain.com:80
gzip
ext .html
header /api Access-Control-Allow-Origin *
This simple file enables gzip compression, serves clean URLs (tries .html
files under the hood), and adds the coveted Access-Control-Allow-Origin: *
header to all requests starting with /api
. Wow! Caddy can do a lot with just four lines.
Maybe you want to serve both HTTP and HTTPS. You can define multiple (virtual) hosts using curly braces:
mydomain.com:80 {
gzip
ext .html
header /api Access-Control-Allow-Origin *
}
mydomain.com:443 {
tls cert.pem key.pem
}
For more details, including which directives you can use to configure Caddy, see the wiki.
Better documentation (and rigorous tests) are on their way as the program matures and leaves the experimental phase.
Contributing
Please submit your ideas in an issue or you can drop a quick tweet to @mholt6. Pull requests that fix bugs are totally welcome, too. (Pull requests for new features should be discussed in an issue first.) Thanks for being involved!