refactor: re-organize doc.
This commit is contained in:
parent
425b53585a
commit
e075dfe911
3 changed files with 80 additions and 69 deletions
|
@ -400,38 +400,6 @@ Here is an example of backends and servers definition:
|
||||||
- `backend2` will forward the traffic to two servers: `http://172.17.0.4:80"` with weight `1` and `http://172.17.0.5:80` with weight `2` using `drr` load-balancing strategy.
|
- `backend2` will forward the traffic to two servers: `http://172.17.0.4:80"` with weight `1` and `http://172.17.0.5:80` with weight `2` using `drr` load-balancing strategy.
|
||||||
- a circuit breaker is added on `backend1` using the expression `NetworkErrorRatio() > 0.5`: watch error ratio over 10 second sliding window
|
- a circuit breaker is added on `backend1` using the expression `NetworkErrorRatio() > 0.5`: watch error ratio over 10 second sliding window
|
||||||
|
|
||||||
### Custom Error pages
|
|
||||||
|
|
||||||
Custom error pages can be returned, in lieu of the default, according to frontend-configured ranges of HTTP Status codes.
|
|
||||||
In the example below, if a 503 status is returned from the frontend "website", the custom error page at http://2.3.4.5/503.html is returned with the actual status code set in the HTTP header.
|
|
||||||
Note, the `503.html` page itself is not hosted on traefik, but some other infrastructure.
|
|
||||||
|
|
||||||
```toml
|
|
||||||
[frontends]
|
|
||||||
[frontends.website]
|
|
||||||
backend = "website"
|
|
||||||
[frontends.website.errors]
|
|
||||||
[frontends.website.errors.network]
|
|
||||||
status = ["500-599"]
|
|
||||||
backend = "error"
|
|
||||||
query = "/{status}.html"
|
|
||||||
[frontends.website.routes.website]
|
|
||||||
rule = "Host: website.mydomain.com"
|
|
||||||
|
|
||||||
[backends]
|
|
||||||
[backends.website]
|
|
||||||
[backends.website.servers.website]
|
|
||||||
url = "https://1.2.3.4"
|
|
||||||
[backends.error]
|
|
||||||
[backends.error.servers.error]
|
|
||||||
url = "http://2.3.4.5"
|
|
||||||
```
|
|
||||||
|
|
||||||
In the above example, the error page rendered was based on the status code.
|
|
||||||
Instead, the query parameter can also be set to some generic error page like so: `query = "/500s.html"`
|
|
||||||
|
|
||||||
Now the 500s.html error page is returned for the configured code range.
|
|
||||||
The configured status code ranges are inclusive; that is, in the above example, the 500s.html page will be returned for status codes 500 through, and including, 599.
|
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
|
@ -440,7 +408,6 @@ Træfik's configuration has two parts:
|
||||||
- The [static Træfik configuration](/basics#static-trfk-configuration) which is loaded only at the beginning.
|
- The [static Træfik configuration](/basics#static-trfk-configuration) which is loaded only at the beginning.
|
||||||
- The [dynamic Træfik configuration](/basics#dynamic-trfk-configuration) which can be hot-reloaded (no need to restart the process).
|
- The [dynamic Træfik configuration](/basics#dynamic-trfk-configuration) which can be hot-reloaded (no need to restart the process).
|
||||||
|
|
||||||
|
|
||||||
### Static Træfik configuration
|
### Static Træfik configuration
|
||||||
|
|
||||||
The static configuration is the global configuration which is setting up connections to configuration backends and entrypoints.
|
The static configuration is the global configuration which is setting up connections to configuration backends and entrypoints.
|
||||||
|
@ -471,7 +438,7 @@ You can override this by setting a `configFile` argument:
|
||||||
$ traefik --configFile=foo/bar/myconfigfile.toml
|
$ traefik --configFile=foo/bar/myconfigfile.toml
|
||||||
```
|
```
|
||||||
|
|
||||||
Please refer to the [global configuration](/toml/#global-configuration) section to get documentation on it.
|
Please refer to the [global configuration](/configuration/commons) section to get documentation on it.
|
||||||
|
|
||||||
#### Arguments
|
#### Arguments
|
||||||
|
|
||||||
|
@ -502,12 +469,12 @@ The dynamic configuration concerns :
|
||||||
- [Backends](/basics/#backends)
|
- [Backends](/basics/#backends)
|
||||||
- [Servers](/basics/#servers)
|
- [Servers](/basics/#servers)
|
||||||
|
|
||||||
Træfik can hot-reload those rules which could be provided by [multiple configuration backends](/toml/#configuration-backends).
|
Træfik can hot-reload those rules which could be provided by [multiple configuration backends](/configuration/commons).
|
||||||
|
|
||||||
We only need to enable `watch` option to make Træfik watch configuration backend changes and generate its configuration automatically.
|
We only need to enable `watch` option to make Træfik watch configuration backend changes and generate its configuration automatically.
|
||||||
Routes to services will be created and updated instantly at any changes.
|
Routes to services will be created and updated instantly at any changes.
|
||||||
|
|
||||||
Please refer to the [configuration backends](/toml/#configuration-backends) section to get documentation on it.
|
Please refer to the [configuration backends](/configuration/commons) section to get documentation on it.
|
||||||
|
|
||||||
## Commands
|
## Commands
|
||||||
|
|
||||||
|
@ -554,11 +521,3 @@ Note: the `web` provider must be enabled to allow `/ping` calls by the `healthch
|
||||||
$ traefik healthcheck
|
$ traefik healthcheck
|
||||||
OK: http://:8082/ping
|
OK: http://:8082/ping
|
||||||
```
|
```
|
||||||
|
|
||||||
## Log Rotation
|
|
||||||
|
|
||||||
Traefik will close and reopen its log files, assuming they're configured, on receipt of a USR1 signal. This allows the logs
|
|
||||||
to be rotated and processed by an external program, such as `logrotate`.
|
|
||||||
|
|
||||||
Note that this does not work on Windows due to the lack of USR signals.
|
|
||||||
|
|
||||||
|
|
|
@ -31,29 +31,6 @@
|
||||||
#
|
#
|
||||||
# checkNewVersion = false
|
# checkNewVersion = false
|
||||||
|
|
||||||
# Traefik logs file
|
|
||||||
# If not defined, logs to stdout
|
|
||||||
#
|
|
||||||
# Optional
|
|
||||||
#
|
|
||||||
# traefikLogsFile = "log/traefik.log"
|
|
||||||
|
|
||||||
# Access logs file
|
|
||||||
#
|
|
||||||
# DEPRECATED - see [accessLog] lower down
|
|
||||||
# Optional
|
|
||||||
#
|
|
||||||
# accessLogsFile = "log/access.log"
|
|
||||||
|
|
||||||
# Log level
|
|
||||||
#
|
|
||||||
# Optional
|
|
||||||
# Default: "ERROR"
|
|
||||||
# Accepted values, in order of severity: "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "PANIC"
|
|
||||||
# Messages at and above the selected level will be logged.
|
|
||||||
#
|
|
||||||
# logLevel = "ERROR"
|
|
||||||
|
|
||||||
# Backends throttle duration: minimum duration in seconds between 2 events from providers
|
# Backends throttle duration: minimum duration in seconds between 2 events from providers
|
||||||
# before applying a new configuration. It avoids unnecessary reloads if multiples events
|
# before applying a new configuration. It avoids unnecessary reloads if multiples events
|
||||||
# are sent in a short amount of time.
|
# are sent in a short amount of time.
|
||||||
|
@ -165,6 +142,27 @@ Supported filters:
|
||||||
# constraints = ["tag==api", "tag!=v*-beta"]
|
# constraints = ["tag==api", "tag!=v*-beta"]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Traefik Logs
|
||||||
|
|
||||||
|
```toml
|
||||||
|
# Traefik logs file
|
||||||
|
# If not defined, logs to stdout
|
||||||
|
#
|
||||||
|
# Optional
|
||||||
|
#
|
||||||
|
# traefikLogsFile = "log/traefik.log"
|
||||||
|
|
||||||
|
# Log level
|
||||||
|
#
|
||||||
|
# Optional
|
||||||
|
# Default: "ERROR"
|
||||||
|
# Accepted values, in order of severity: "DEBUG", "INFO", "WARN", "ERROR", "FATAL", "PANIC"
|
||||||
|
# Messages at and above the selected level will be logged.
|
||||||
|
#
|
||||||
|
# logLevel = "ERROR"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Access Log Definition
|
## Access Log Definition
|
||||||
|
|
||||||
Access logs are written when `[accessLog]` is defined.
|
Access logs are written when `[accessLog]` is defined.
|
||||||
|
@ -188,6 +186,59 @@ To write JSON format logs, specify `json` as the format:
|
||||||
format = "json"
|
format = "json"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Deprecated way (before 1.4):
|
||||||
|
```toml
|
||||||
|
# Access logs file
|
||||||
|
#
|
||||||
|
# DEPRECATED - see [accessLog] lower down
|
||||||
|
# Optional
|
||||||
|
#
|
||||||
|
accessLogsFile = "log/access.log"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Log Rotation
|
||||||
|
|
||||||
|
Traefik will close and reopen its log files, assuming they're configured, on receipt of a USR1 signal.
|
||||||
|
This allows the logs to be rotated and processed by an external program, such as `logrotate`.
|
||||||
|
|
||||||
|
!!! note
|
||||||
|
that this does not work on Windows due to the lack of USR signals.
|
||||||
|
|
||||||
|
|
||||||
|
## Custom Error pages
|
||||||
|
|
||||||
|
Custom error pages can be returned, in lieu of the default, according to frontend-configured ranges of HTTP Status codes.
|
||||||
|
In the example below, if a 503 status is returned from the frontend "website", the custom error page at http://2.3.4.5/503.html is returned with the actual status code set in the HTTP header.
|
||||||
|
Note, the `503.html` page itself is not hosted on traefik, but some other infrastructure.
|
||||||
|
|
||||||
|
```toml
|
||||||
|
[frontends]
|
||||||
|
[frontends.website]
|
||||||
|
backend = "website"
|
||||||
|
[frontends.website.errors]
|
||||||
|
[frontends.website.errors.network]
|
||||||
|
status = ["500-599"]
|
||||||
|
backend = "error"
|
||||||
|
query = "/{status}.html"
|
||||||
|
[frontends.website.routes.website]
|
||||||
|
rule = "Host: website.mydomain.com"
|
||||||
|
|
||||||
|
[backends]
|
||||||
|
[backends.website]
|
||||||
|
[backends.website.servers.website]
|
||||||
|
url = "https://1.2.3.4"
|
||||||
|
[backends.error]
|
||||||
|
[backends.error.servers.error]
|
||||||
|
url = "http://2.3.4.5"
|
||||||
|
```
|
||||||
|
|
||||||
|
In the above example, the error page rendered was based on the status code.
|
||||||
|
Instead, the query parameter can also be set to some generic error page like so: `query = "/500s.html"`
|
||||||
|
|
||||||
|
Now the `500s.html` error page is returned for the configured code range.
|
||||||
|
The configured status code ranges are inclusive; that is, in the above example, the `500s.html` page will be returned for status codes `500` through, and including, `599`.
|
||||||
|
|
||||||
|
|
||||||
## Entry Points Definition
|
## Entry Points Definition
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
|
@ -450,4 +501,5 @@ To write JSON format logs, specify `json` as the format:
|
||||||
# Default: "0s"
|
# Default: "0s"
|
||||||
#
|
#
|
||||||
# responseHeaderTimeout = "0s"
|
# responseHeaderTimeout = "0s"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ Beginning with version 1.4, Traefik respects readiness check results if the Trae
|
||||||
Note that due to the way readiness check results are currently exposed by the Marathon API, ready tasks may be taken into rotation with a small delay.
|
Note that due to the way readiness check results are currently exposed by the Marathon API, ready tasks may be taken into rotation with a small delay.
|
||||||
It is on the order of one readiness check timeout interval (as configured on the application specifiation) and guarantees that non-ready tasks do not receive traffic prematurely.
|
It is on the order of one readiness check timeout interval (as configured on the application specifiation) and guarantees that non-ready tasks do not receive traffic prematurely.
|
||||||
|
|
||||||
If readiness checks are not possible, a current mitigation strategy is to enable [retries](https://docs.traefik.io/toml/#retry-configuration) and make sure that a sufficient number of healthy application tasks exist so that one retry will likely hit one of those.
|
If readiness checks are not possible, a current mitigation strategy is to enable [retries](/configuration/commons#retry-configuration) and make sure that a sufficient number of healthy application tasks exist so that one retry will likely hit one of those.
|
||||||
Apart from its probabilistic nature, the workaround comes at the price of increased latency.
|
Apart from its probabilistic nature, the workaround comes at the price of increased latency.
|
||||||
|
|
||||||
### Shutdown
|
### Shutdown
|
||||||
|
|
Loading…
Reference in a new issue