docs: More changes for upcoming v2.5.0 release (#226)

This commit is contained in:
Francis Lavoie 2022-04-25 12:51:42 -04:00 committed by GitHub
parent 35a02d78d7
commit eaf0aae816
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 73 additions and 8 deletions

View file

@ -141,15 +141,18 @@ Quotes can be escaped if you need to use quotes in quoted tokens, too:
directive "\"abc def\"" directive "\"abc def\""
``` ```
Inside quoted tokens, all other characters are treated literally, including spaces, tabs, and newlines. Inside quoted tokens, all other characters are treated literally, including spaces, tabs, and newlines. Multi-line tokens are possible:
You can also use a backtick <code>`</code> to quote tokens:
```caddy-d ```caddy-d
directive `"foo bar"` directive "first line
second line"
``` ```
Backtick strings are convenient when tokens contain quote literals, e.g. JSON text. You can also use a backtick <code>`</code> to quote tokens; these are convenient when tokens themselves contain double quotes, e.g. JSON text:
```caddy-d
directive `{"foo": "bar"}`
```
@ -254,6 +257,7 @@ You can use any [Caddy placeholders](/docs/conventions#placeholders) in the Cadd
| `{tls_client_certificate_pem}` | `{http.request.tls.client.certificate_pem}` | | `{tls_client_certificate_pem}` | `{http.request.tls.client.certificate_pem}` |
| `{tls_client_certificate_der_base64}` | `{http.request.tls.client.certificate_der_base64}` | | `{tls_client_certificate_der_base64}` | `{http.request.tls.client.certificate_der_base64}` |
| `{upstream_hostport}` | `{http.reverse_proxy.upstream.hostport}` | | `{upstream_hostport}` | `{http.reverse_proxy.upstream.hostport}` |
| `{vars.*}` | `{http.vars.*}` |

View file

@ -66,6 +66,7 @@ Directive | Description
**[tracing](/docs/caddyfile/directives/tracing)** | Integration with OpenTelemetry tracing **[tracing](/docs/caddyfile/directives/tracing)** | Integration with OpenTelemetry tracing
**[try_files](/docs/caddyfile/directives/try_files)** | Rewrite that depends on file existence **[try_files](/docs/caddyfile/directives/try_files)** | Rewrite that depends on file existence
**[uri](/docs/caddyfile/directives/uri)** | Manipulate the URI **[uri](/docs/caddyfile/directives/uri)** | Manipulate the URI
**[vars](/docs/caddyfile/directives/vars)** | Set arbitrary variables
</div> </div>
@ -109,6 +110,7 @@ Many directives manipulate the HTTP handler chain. The order in which those dire
tracing tracing
map map
vars
root root
header header

View file

@ -29,6 +29,8 @@ map [<matcher>] <source> <destinations...> {
As a special case, the Caddyfile parser treats outputs that are a literal hyphen (`-`) as null/nil values. This is useful if you want to fall back to a default value for that particular output in the case of the given input, but want to use non-default values for other outputs. As a special case, the Caddyfile parser treats outputs that are a literal hyphen (`-`) as null/nil values. This is useful if you want to fall back to a default value for that particular output in the case of the given input, but want to use non-default values for other outputs.
The outputs will be type converted if possible; `true` and `false` will be converted to boolean types, and numeric values will be converted to integer or float accordingly. To avoid this conversion, you may wrap the output with [quotes](/docs/caddyfile/concepts#tokens-and-quotes) and they will stay strings.
The number of outputs for each mapping must not exceed the number of destinations; however, for convenience, there may be fewer outputs than destinations, and any missing outputs will be filled in implicitly. The number of outputs for each mapping must not exceed the number of destinations; however, for convenience, there may be fewer outputs than destinations, and any missing outputs will be filled in implicitly.
If a regular expression was used as the input, then the capture groups can be referenced with `${group}` where `group` is either the name or number of the capture group in the expression. Capture group `0` is the full regexp match, `1` is the first capture group, `2` is the second capture group, and so on. If a regular expression was used as the input, then the capture groups can be referenced with `${group}` where `group` is either the name or number of the capture group in the expression. Capture group `0` is the full regexp match, `1` is the first capture group, `2` is the second capture group, and so on.

View file

@ -130,6 +130,7 @@ Obtains certificates using the ACME protocol.
trusted_roots <pem_files...> trusted_roots <pem_files...>
dns <provider_name> [<options>] dns <provider_name> [<options>]
propagation_timeout <duration> propagation_timeout <duration>
propagation_delay <duration>
resolvers <dns_servers...> resolvers <dns_servers...>
preferred_chains [smallest] { preferred_chains [smallest] {
root_common_name <common_names...> root_common_name <common_names...>
@ -149,7 +150,8 @@ Obtains certificates using the ACME protocol.
- **eab** <span id="eab"/> specifies an External Account Binding which may be required with some ACME CAs. - **eab** <span id="eab"/> specifies an External Account Binding which may be required with some ACME CAs.
- **trusted_roots** <span id="trusted_roots"/> is one or more root certificates (as PEM filenames) to trust when connecting to the ACME CA server. - **trusted_roots** <span id="trusted_roots"/> is one or more root certificates (as PEM filenames) to trust when connecting to the ACME CA server.
- **dns** <span id="dns"/> configures the DNS challenge. - **dns** <span id="dns"/> configures the DNS challenge.
- **propagation_timeout** <span id="propagation_timeout"/> is a [duration value](/docs/conventions#durations) that sets how long to wait for DNS TXT records to propagate when using the DNS challenge. Default 2 minutes. - **propagation_timeout** <span id="propagation_timeout"/> is a [duration value](/docs/conventions#durations) that sets the maximum time to wait for the DNS TXT records to appear when using the DNS challenge. Set to `-1` to disable propagation checks. Default 2 minutes.
- **propagation_delay** <span id="propagation_delay"/> is a [duration value](/docs/conventions#durations) that sets how long to wait before starting DNS TXT records propagation checks when using the DNS challenge. Default 0 (no wait).
- **resolvers** <span id="resolvers"/> customizes the DNS resolvers used when performing the DNS challenge; these take precedence over system resolvers or any default ones. - **resolvers** <span id="resolvers"/> customizes the DNS resolvers used when performing the DNS challenge; these take precedence over system resolvers or any default ones.
- **preferred_chains** <span id="preferred_chains"/> specifies which certificate chains Caddy should prefer; useful if your CA provides multiple chains. Use one of the following options: - **preferred_chains** <span id="preferred_chains"/> specifies which certificate chains Caddy should prefer; useful if your CA provides multiple chains. Use one of the following options:
- **smallest** <span id="smallest"/> will tell Caddy to prefer chains with the fewest amount of bytes. - **smallest** <span id="smallest"/> will tell Caddy to prefer chains with the fewest amount of bytes.

View file

@ -0,0 +1,53 @@
---
title: vars (Caddyfile directive)
---
# vars
Sets one or more variables to a particular value, to be used later in the request handling chain.
The primary way to access variables is with placeholders, which have the form `{vars.variable_name}`, or with the [`vars`](/docs/caddyfile/matchers#vars) and [`vars_regexp`](/docs/caddyfile/matchers#vars_regexp) request matchers.
## Syntax
```caddy-d
vars [<matcher>] [<name> <value>] {
<name> <value>
...
}
```
- **&lt;name&gt;** is the variable name to set.
- **&lt;value&gt;** is the value of the variable.
The value will be type converted if possible; `true` and `false` will be converted to boolean types, and numeric values will be converted to integer or float accordingly. To avoid this conversion, you may wrap the output with [quotes](/docs/caddyfile/concepts#tokens-and-quotes) and they will stay strings.
## Examples
To set a single variable, the value being conditional based on the request path, then responding with the value:
```caddy-d
vars /foo* isFoo "yep"
vars isFoo "nope"
respond {vars.isFoo}
```
To set multiple variables, each converted to the appropriate scalar type:
```caddy-d
vars {
# boolean
abc true
# integer
def 1
# float
ghi 2.3
# string
jkl "example"
}
```

View file

@ -179,7 +179,7 @@ This command disables the admin API, making it easier to run multiple instances
### `caddy fmt` ### `caddy fmt`
<pre><code class="cmd bash">caddy fmt [--overwrite] [&lt;path&gt;]</code></pre> <pre><code class="cmd bash">caddy fmt [--overwrite] [--diff] [&lt;path&gt;]</code></pre>
Formats or prettifies a Caddyfile, then exits. The result is printed to stdout unless `--overwrite` is used. Formats or prettifies a Caddyfile, then exits. The result is printed to stdout unless `--overwrite` is used.
@ -187,6 +187,8 @@ Formats or prettifies a Caddyfile, then exits. The result is printed to stdout u
`--overwrite` causes the result to be written to the input file instead of being printed to the terminal. If the input is not a regular file, this flag has no effect. `--overwrite` causes the result to be written to the input file instead of being printed to the terminal. If the input is not a regular file, this flag has no effect.
`--diff` causes the output to be compared against the input, and lines will be prefixed with `-` and `+` where they differ. Note that unchanges lines are prefixed with two spaces for alignment, and that this is not a valid patch format; it's just meant as a visual tool.
@ -294,7 +296,7 @@ Runs Caddy and blocks indefinitely; i.e. "daemon" mode.
`--environ` prints out the environment before starting. This is the same as the `caddy environ` command, but does not exit after printing. `--environ` prints out the environment before starting. This is the same as the `caddy environ` command, but does not exit after printing.
`--envfile` loads environment variables from the specified file. `--envfile` loads environment variables from the specified file, in `KEY=VALUE` format. Comments starting with `#` are supported; keys may be prefixed with `export`; values may be double-quoted (double-quotes within can be escaped); multi-line values are supported.
`--resume` uses the last loaded configuration that was autosaved, overriding the `--config` flag (if present). Using this flag guarantees config durability through machine reboots or process restarts. It is most useful in [API](/docs/api)-centric deployments. `--resume` uses the last loaded configuration that was autosaved, overriding the `--config` flag (if present). Using this flag guarantees config durability through machine reboots or process restarts. It is most useful in [API](/docs/api)-centric deployments.