0
Fork 0
mirror of https://github.com/caddyserver/caddy.git synced 2024-12-23 22:27:38 -05:00
Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Find a file
2015-03-03 09:49:45 -07:00
config Added WebSocket middleware 2015-03-03 09:49:45 -07:00
middleware Added WebSocket middleware 2015-03-03 09:49:45 -07:00
server Partial support for location contexts in config files 2015-03-03 09:49:01 -07:00
.gitignore Created basic fastcgi middleware layer 2015-01-21 17:51:47 -07:00
main.go Major refactoring; more modular middleware 2015-01-18 23:11:21 -07:00
README.md Added feature list 2015-01-21 19:16:31 -07:00

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

  1. Download or build it
  2. cd into a directory you want to serve
  3. ./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!