#9779·traefik

Middlewares in Entrypoints cause false(?) Errors on start up

Author: spezifantaCreated Mar 14, 2023Updated Sep 15, 2026
Labelskind/bug/confirmedarea/provider

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