Middlewares in Entrypoints cause false(?) Errors on start up
Welcome!
- Yes, I've searched similar issues on GitHub and didn't find any.
- Yes, I've searched similar issues on the Traefik community forum and didn't find any.
What did you do?
I have configured a middleware on my entrypoints called hostname@file via dynamic config and it works. However, when starting Traefik, there is an error saying that the given middleware does not exist.
If I check the acme-http@internal HTTP Router in dashboard, it is fine:
If I had to guess, it looks like some kind of timing problem. While launching Traefik and referencing a middleware via CLI on entrypoints, the dynamic configurations might not be fully loaded yet (even though it says so in the log...).
Why do I care? It causes false "error" statements in thelogs, which than triggers monitoring and alerting.
Or maybe I did something wrong?
What did you see instead?
traefik | time="2023-03-14T20:05:25Z" level=info msg="Configuration loaded from flags."
traefik | time="2023-03-14T20:05:25Z" level=info msg="Traefik version 2.9.8 built on 2023-02-15T15:23:25Z"
traefik | time="2023-03-14T20:05:25Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
traefik | time="2023-03-14T20:05:25Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
traefik | time="2023-03-14T20:05:25Z" level=info msg="Starting provider *file.Provider"
traefik | time="2023-03-14T20:05:25Z" level=info msg="Starting provider *traefik.Provider"
traefik | time="2023-03-14T20:05:25Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
traefik | time="2023-03-14T20:05:25Z" level=info msg="Starting provider *acme.Provider"
traefik | time="2023-03-14T20:05:25Z" level=info msg="Testing certificate renew..." providerName=le-http.acme ACME CA="https://acme-v02.api.letsencrypt.org/directory"
traefik | time="2023-03-14T20:05:25Z" level=info msg="Starting provider *acme.Provider"
traefik | time="2023-03-14T20:05:25Z" level=info msg="Testing certificate renew..." ACME CA="https://acme-v02.api.letsencrypt.org/directory" providerName=le.acme
traefik | time="2023-03-14T20:05:26Z" level=error msg="middleware \"hostname@file\" does not exist" entryPointName=web routerName=acme-http@internal
traefik | time="2023-03-14T20:05:26Z" level=error msg="middleware \"hostname@file\" does not exist" routerName=web-to-websecure@internal entryPointName=web
What version of Traefik are you using?
Version: 2.9.8 Codename: banon Go version: go1.19.6 Built: 2023-02-15T15:23:25Z OS/Arch: linux/amd64
What is your environment & configuration?
version: "3.3"
services:
traefik:
container_name: "traefik"
image: traefik:v2.9.8
command:
- "--log.level=INFO"
- "--accesslog=true"
- "--accesslog.filepath=/logs/access.log"
- "--api.dashboard=true"
- "--providers.file.watch=true"
- "--providers.file.directory=/config"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.middlewares=hostname@file"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--entrypoints.web.http.redirections.entrypoint.permanent=true"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.websecure.http.middlewares=hostname@file"
volumes:
- "./config:/config"
- "./certs:/certs"
- "./logs:/logs"
ports:
- "80:80"
- ":443"
Middleware:
# config/common.yml
http:
middlewares:
hostname:
headers:
customResponseHeaders:
X-Proxy: sv-proxy2-1
If applicable, please paste the log output in DEBUG level
traefik | time="2023-03-14T20:53:00Z" level=info msg="\nStats collection is disabled.\nHelp us improve Traefik by turning this feature on :)\nMore details on: https://doc.traefik.io/traefik/contributing/data-collection/\n"
traefik | time="2023-03-14T20:53:00Z" level=debug msg="Configured Prometheus metrics" metricsProviderName=prometheus
traefik | time="2023-03-14T20:53:00Z" level=info msg="Starting provider aggregator aggregator.ProviderAggregator"
traefik | time="2023-03-14T20:53:00Z" level=debug msg="Starting TCP Server" entryPointName=traefik
traefik | time="2023-03-14T20:53:00Z" level=debug msg="Starting TCP Server" entryPointName=websecure
traefik | time="2023-03-14T20:53:00Z" level=debug msg="Starting TCP Server" entryPointName=web
traefik | time="2023-03-14T20:53:00Z" level=info msg="Starting provider *file.Provider"
traefik | time="2023-03-14T20:53:00Z" level=debug msg="*file.Provider provider configuration: {\"directory\":\"/config\",\"watch\":true}"
traefik | time="2023-03-14T20:53:00Z" level=info msg="Starting provider *traefik.Provider"
traefik | time="2023-03-14T20:53:00Z" level=debug msg="*traefik.Provider provider configuration: {}"
traefik | time="2023-03-14T20:53:00Z" level=info msg="Starting provider *acme.ChallengeTLSALPN"
traefik | time="2023-03-14T20:53:00Z" level=debug msg="*acme.ChallengeTLSALPN provider configuration: {}"
traefik | time="2023-03-14T20:53:00Z" level=info msg="Starting provider *acme.Provider"
...
traefik | time="2023-03-14T20:53:00Z" level=debug msg="Configuration received: {\"http\":{},\"tcp\":{},\"udp\":{},\"tls\":{}}" providerName=le.acme
traefik | time="2023-03-14T20:53:00Z" level=debug msg="Configuration received: {\"http\":{},\"tcp\":{},\"udp\":{},\"tls\":{}}" providerName=le-http.acme
traefik | time="2023-03-14T20:53:01Z" level=debug msg="No default certificate, fallback to the internal generated certificate" tlsStoreName=default
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Added outgoing tracing middleware acme-http@internal" middlewareName=tracing middlewareType=TracingForwarder entryPointName=web routerName=acme-http@internal
traefik | time="2023-03-14T20:53:01Z" level=**error msg="middleware \"hostname@file\" does not exist" routerName=acme-http@internal entryPointName=web**
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Added outgoing tracing middleware noop@internal" entryPointName=web routerName=web-to-websecure@internal middlewareName=tracing middlewareType=TracingForwarder
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Creating middleware" middlewareType=RedirectScheme middlewareName=redirect-web-to-websecure@internal entryPointName=web routerName=web-to-websecure@internal
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Setting up redirection to https 443" middlewareType=RedirectScheme middlewareName=redirect-web-to-websecure@internal entryPointName=web routerName=web-to-websecure@internal
traefik | time="2023-03-14T20:53:01Z" level=**error msg="middleware \"hostname@file\" does not exist" entryPointName=web routerName=web-to-websecure@internal**
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Creating middleware" entryPointName=web middlewareType=Recovery middlewareName=traefik-internal-recovery
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Added outgoing tracing middleware prometheus@internal" middlewareName=tracing middlewareType=TracingForwarder routerName=prometheus@internal entryPointName=traefik
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Creating middleware" middlewareName=traefik-internal-recovery middlewareType=Recovery entryPointName=traefik
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Creating middleware" entryPointName=web middlewareType=Metrics middlewareName=metrics-entrypoint
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Creating middleware" middlewareType=Metrics entryPointName=websecure middlewareName=metrics-entrypoint
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Creating middleware" entryPointName=traefik middlewareName=metrics-entrypoint middlewareType=Metrics
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Creating middleware" middlewareName=metrics-entrypoint entryPointName=web middlewareType=Metrics
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Creating middleware" middlewareType=Metrics entryPointName=websecure middlewareName=metrics-entrypoint
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Creating middleware" middlewareName=metrics-entrypoint middlewareType=Metrics entryPointName=traefik
...
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Added outgoing tracing middleware acme-http@internal" middlewareType=TracingForwarder middlewareName=tracing entryPointName=web routerName=acme-http@internal
traefik | time="2023-03-14T20:53:01Z" level=debug msg="**Creating middleware" routerName=acme-http@internal middlewareName=hostname@file middlewareType=Headers entryPointName=web**
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Setting up customHeaders/Cors from {map[] map[X-Proxy-2:sv-proxy2-1] false [] [] [] [] [] 0 false [] [] false false map[] false 0 false false false false false false false}" entryPointName=web routerName=acme-http@internal middlewareName=hostname@file middlewareType=Headers
traefik | time="2023-03-14T20:53:01Z" level=debug msg="_**Adding tracing to middleware" entryPointName=web routerName=acme-http@internal middlewareName=hostname@file**_
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Added outgoing tracing middleware noop@internal" middlewareType=TracingForwarder middlewareName=tracing entryPointName=web routerName=web-to-websecure@internal
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Creating middleware" middlewareType=RedirectScheme middlewareName=redirect-web-to-websecure@internal entryPointName=web routerName=web-to-websecure@internal
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Setting up redirection to https 443" entryPointName=web routerName=web-to-websecure@internal middlewareType=RedirectScheme middlewareName=redirect-web-to-websecure@internal
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Creating middleware" entryPointName=web routerName=web-to-websecure@internal middlewareName=hostname@file middlewareType=Headers
traefik | time="2023-03-14T20:53:01Z" level=debug msg="Setting up customHeaders/Cors from {map[] map[X-Proxy-2:sv-proxy2-1] false [] [] [] [] [] 0 false [] [] false false map[] false 0 false false false false false false false}" entryPointName=web routerName=web-to-websecure@internal middlewareName=hostname@file middlewareType=Headers
Source: traefik/traefik