caddy-website/src/docs/markdown/caddyfile/directives.md

93 lines
3.3 KiB
Markdown
Raw Normal View History

2020-01-24 12:47:52 -07:00
---
title: Caddyfile Directives
---
# Caddyfile Directives
The following directives come standard with Caddy, and can be used in the HTTP Caddyfile:
Directive | Description
----------|------------
**[basicauth](/docs/caddyfile/directives/basicauth)** | Enforces HTTP Basic Authentication
**[bind](/docs/caddyfile/directives/bind)** | Customize the server's socket address
**[encode](/docs/caddyfile/directives/encode)** | Encodes (usually compresses) responses
**[file_server](/docs/caddyfile/directives/file_server)** | Serve files from disk
**[handle](/docs/caddyfile/directives/handle)** | A mutually-exclusive group of directives
**[header](/docs/caddyfile/directives/header)** | Sets or removes response headers
2020-02-28 11:16:45 -07:00
**[log](/docs/caddyfile/directives/log)** | Enables access/request logging
2020-01-24 12:47:52 -07:00
**[php_fastcgi](/docs/caddyfile/directives/php_fastcgi)** | Serve PHP sites over FastCGI
**[redir](/docs/caddyfile/directives/redir)** | Issues an HTTP redirect to the client
**[request_header](/docs/caddyfile/directives/request_header)** | Manipulates request headers
**[respond](/docs/caddyfile/directives/respond)** | Writes a hard-coded response to the client
**[reverse_proxy](/docs/caddyfile/directives/reverse_proxy)** | A powerful and extensible reverse proxy
**[rewrite](/docs/caddyfile/directives/rewrite)** | Rewrites the request internally
**[root](/docs/caddyfile/directives/root)** | Set the path to the site root
**[route](/docs/caddyfile/directives/route)** | A group of directives treated literally as single unit
**[templates](/docs/caddyfile/directives/templates)** | Execute templates on the response
**[tls](/docs/caddyfile/directives/tls)** | Customize TLS settings
**[try_files](/docs/caddyfile/directives/try_files)** | Rewrite that depends on file existence
2020-03-21 21:03:55 -06:00
**[uri](/docs/caddyfile/directives/uri)** | Manipulate the URI
2020-01-24 12:47:52 -07:00
## Syntax
The syntax of each directive will look something like this:
```
directive [<matcher>] <args...> {
subdirective [<args...>]
}
```
The `<carets>` indicate tokens to be substituted by actual values.
The`[brackets]` indicate optional parameters.
The ellipses `...` indicates a continuation, i.e. one or more parameters or lines.
Subdirectives are always optional unless documented otherwise, even though they don't appear in `[brackets]`.
### Matchers
Most---but not all---directives accept [matcher tokens](/docs/caddyfile/concepts#matchers), which let you filter requests. Matcher tokens are usually optional. If you see this in a directive's syntax:
2020-01-24 12:47:52 -07:00
```
[<matcher>]
```
then the directive accepts a matcher token, letting you filter which requests the directive applies to.
Because matcher tokens all work the same, the various possibilities for the matcher token will not be described on every page, to reduce duplication. Instead, refer to the centralized [matcher documentation](/docs/caddyfile/concepts#matchers).
2020-01-24 12:47:52 -07:00
## Directive order
Many directives manipulate the HTTP handler chain. The order in which those directives are evaluated matters, so a default ordering is hard-coded into Caddy:
```
2020-03-22 16:14:17 -06:00
header
2020-01-24 12:47:52 -07:00
redir
rewrite
2020-03-22 16:14:17 -06:00
root
2020-03-21 21:03:55 -06:00
uri
2020-01-24 12:47:52 -07:00
try_files
basicauth
request_header
encode
templates
handle
route
respond
reverse_proxy
php_fastcgi
file_server
```
2020-03-21 21:03:55 -06:00
You can override/customize this ordering by using the [`order` global option](/docs/caddyfile/options) or the [`route` directive](/docs/caddyfile/directives/route).