Multiple rules docs
Signed-off-by: Emile Vauge <emile@vauge.com>
This commit is contained in:
parent
30db47d9b6
commit
85fcff4cf7
2 changed files with 13 additions and 12 deletions
|
@ -59,13 +59,14 @@ Here is an example of entrypoints definition:
|
||||||
A frontend is a set of rules that forwards the incoming traffic from an entrypoint to a backend.
|
A frontend is a set of rules that forwards the incoming traffic from an entrypoint to a backend.
|
||||||
Frontends can be defined using the following rules:
|
Frontends can be defined using the following rules:
|
||||||
|
|
||||||
- `Headers`: Headers adds a matcher for request header values. It accepts a sequence of key/value pairs to be matched. For example: `Content-Type, application/json`
|
- `Headers: Content-Type, application/json`: Headers adds a matcher for request header values. It accepts a sequence of key/value pairs to be matched.
|
||||||
- `HeadersRegexp`: Regular expressions can be used with headers as well. It accepts a sequence of key/value pairs, where the value has regex support. For example: `Content-Type, application/(text|json)`
|
- `HeadersRegexp: Content-Type, application/(text|json)`: Regular expressions can be used with headers as well. It accepts a sequence of key/value pairs, where the value has regex support.
|
||||||
- `Host`: Host adds a matcher for the URL host. It accepts a template with zero or more URL variables enclosed by `{}`. Variables can define an optional regexp pattern to be matched: `www.traefik.io`, `{subdomain:[a-z]+}.traefik.io`
|
- `Host: traefik.io, www.traefik.io`: Match request host with given host list.
|
||||||
- `Methods`: Methods adds a matcher for HTTP methods. It accepts a sequence of one or more methods to be matched, e.g.: `GET`, `POST`, `PUT`
|
- `HostRegexp: traefik.io, {subdomain:[a-z]+}.traefik.io`: Adds a matcher for the URL hosts. It accepts templates with zero or more URL variables enclosed by `{}`. Variables can define an optional regexp pattern to be matched.
|
||||||
- `Path`: Path adds a matcher for the URL path. It accepts a template with zero or more URL variables enclosed by `{}`. The template must start with a `/`. For exemple `/products/` `/articles/{category}/{id:[0-9]+}`
|
- `Method: GET, POST, PUT`: Methods adds a matcher for HTTP methods. It accepts a sequence of one or more methods to be matched.
|
||||||
|
- `Path: /products/, /articles/{category}/{id:[0-9]+}`: Path adds a matcher for the URL paths. It accepts templates with zero or more URL variables enclosed by `{}`.
|
||||||
- `PathStrip`: Same as `Path` but strip the given prefix from the request URL's Path.
|
- `PathStrip`: Same as `Path` but strip the given prefix from the request URL's Path.
|
||||||
- `PathPrefix`: PathPrefix adds a matcher for the URL path prefix. This matches if the given template is a prefix of the full URL path.
|
- `PathPrefix`: PathPrefix adds a matcher for the URL path prefixes. This matches if the given template is a prefix of the full URL path.
|
||||||
- `PathPrefixStrip`: Same as `PathPrefix` but strip the given prefix from the request URL's Path.
|
- `PathPrefixStrip`: Same as `PathPrefix` but strip the given prefix from the request URL's Path.
|
||||||
|
|
||||||
You can optionally enable `passHostHeader` to forward client `Host` header to the backend.
|
You can optionally enable `passHostHeader` to forward client `Host` header to the backend.
|
||||||
|
@ -77,21 +78,21 @@ Here is an example of frontends definition:
|
||||||
[frontends.frontend1]
|
[frontends.frontend1]
|
||||||
backend = "backend2"
|
backend = "backend2"
|
||||||
[frontends.frontend1.routes.test_1]
|
[frontends.frontend1.routes.test_1]
|
||||||
rule = "Host:test.localhost"
|
rule = "Host: test.localhost, test2.localhost"
|
||||||
[frontends.frontend2]
|
[frontends.frontend2]
|
||||||
backend = "backend1"
|
backend = "backend1"
|
||||||
passHostHeader = true
|
passHostHeader = true
|
||||||
entrypoints = ["https"] # overrides defaultEntryPoints
|
entrypoints = ["https"] # overrides defaultEntryPoints
|
||||||
[frontends.frontend2.routes.test_1]
|
[frontends.frontend2.routes.test_1]
|
||||||
rule = "Host:{subdomain:[a-z]+}.localhost"
|
rule = "Host: localhost, {subdomain:[a-z]+}.localhost"
|
||||||
[frontends.frontend3]
|
[frontends.frontend3]
|
||||||
backend = "backend2"
|
backend = "backend2"
|
||||||
rule = "Path:/test"
|
rule = "Path:/test"
|
||||||
```
|
```
|
||||||
|
|
||||||
- Three frontends are defined: `frontend1`, `frontend2` and `frontend3`
|
- Three frontends are defined: `frontend1`, `frontend2` and `frontend3`
|
||||||
- `frontend1` will forward the traffic to the `backend2` if the rule `Host:test.localhost` is matched
|
- `frontend1` will forward the traffic to the `backend2` if the rule `Host: test.localhost, test2.localhost` is matched
|
||||||
- `frontend2` will forward the traffic to the `backend1` if the rule `Host:{subdomain:[a-z]+}.localhost` is matched (forwarding client `Host` header to the backend)
|
- `frontend2` will forward the traffic to the `backend1` if the rule `Host: localhost, {subdomain:[a-z]+}.localhost` is matched (forwarding client `Host` header to the backend)
|
||||||
- `frontend3` will forward the traffic to the `backend2` if the rule `Path:/test` is matched
|
- `frontend3` will forward the traffic to the `backend2` if the rule `Path:/test` is matched
|
||||||
|
|
||||||
## Backends
|
## Backends
|
||||||
|
|
|
@ -513,7 +513,7 @@
|
||||||
# [frontends.frontend1]
|
# [frontends.frontend1]
|
||||||
# backend = "backend2"
|
# backend = "backend2"
|
||||||
# [frontends.frontend1.routes.test_1]
|
# [frontends.frontend1.routes.test_1]
|
||||||
# rule = "Host:test.localhost"
|
# rule = "Host: test.localhost, other.localhost"
|
||||||
# [frontends.frontend2]
|
# [frontends.frontend2]
|
||||||
# backend = "backend1"
|
# backend = "backend1"
|
||||||
# passHostHeader = true
|
# passHostHeader = true
|
||||||
|
@ -523,4 +523,4 @@
|
||||||
# [frontends.frontend3]
|
# [frontends.frontend3]
|
||||||
# entrypoints = ["http", "https"] # overrides defaultEntryPoints
|
# entrypoints = ["http", "https"] # overrides defaultEntryPoints
|
||||||
# backend = "backend2"
|
# backend = "backend2"
|
||||||
# rule = "Path:/test"
|
# rule = "Path: /test, /other"
|
Loading…
Reference in a new issue