Skip to content

File Configuration Reference

Dynamic configuration with files

http:
  routers:
    Router0:
      entryPoints:
      - foobar
      - foobar
      middlewares:
      - foobar
      - foobar
      service: foobar
      rule: foobar
      priority: 42
      tls:
        options: foobar
        certResolver: foobar
        domains:
        - main: foobar
          sans:
          - foobar
          - foobar
        - main: foobar
          sans:
          - foobar
          - foobar
    Router1:
      entryPoints:
      - foobar
      - foobar
      middlewares:
      - foobar
      - foobar
      service: foobar
      rule: foobar
      priority: 42
      tls:
        options: foobar
        certResolver: foobar
        domains:
        - main: foobar
          sans:
          - foobar
          - foobar
        - main: foobar
          sans:
          - foobar
          - foobar
  services:
    Service01:
      loadBalancer:
        sticky:
          cookie:
            name: foobar
            secure: true
            httpOnly: true
            sameSite: foobar
        servers:
        - url: foobar
        - url: foobar
        healthCheck:
          scheme: foobar
          path: foobar
          port: 42
          interval: foobar
          timeout: foobar
          hostname: foobar
          followRedirects: true
          headers:
            name0: foobar
            name1: foobar
        passHostHeader: true
        responseForwarding:
          flushInterval: foobar
        serversTransport: foobar
    Service02:
      mirroring:
        service: foobar
        maxBodySize: 42
        mirrors:
        - name: foobar
          percent: 42
        - name: foobar
          percent: 42
    Service03:
      weighted:
        services:
        - name: foobar
          weight: 42
        - name: foobar
          weight: 42
        sticky:
          cookie:
            name: foobar
            secure: true
            httpOnly: true
            sameSite: foobar
  middlewares:
    Middleware00:
      addPrefix:
        prefix: foobar
    Middleware01:
      basicAuth:
        users:
        - foobar
        - foobar
        usersFile: foobar
        realm: foobar
        removeHeader: true
        headerField: foobar
    Middleware02:
      buffering:
        maxRequestBodyBytes: 42
        memRequestBodyBytes: 42
        maxResponseBodyBytes: 42
        memResponseBodyBytes: 42
        retryExpression: foobar
    Middleware03:
      chain:
        middlewares:
        - foobar
        - foobar
    Middleware04:
      circuitBreaker:
        expression: foobar
    Middleware05:
      compress:
        excludedContentTypes:
        - foobar
        - foobar
    Middleware06:
      contentType:
        autoDetect: true
    Middleware07:
      digestAuth:
        users:
        - foobar
        - foobar
        usersFile: foobar
        removeHeader: true
        realm: foobar
        headerField: foobar
    Middleware08:
      errors:
        status:
        - foobar
        - foobar
        service: foobar
        query: foobar
    Middleware09:
      forwardAuth:
        address: foobar
        tls:
          ca: foobar
          caOptional: true
          cert: foobar
          key: foobar
          insecureSkipVerify: true
        trustForwardHeader: true
        authResponseHeaders:
        - foobar
        - foobar
        authResponseHeadersRegex: foobar
        authRequestHeaders:
        - foobar
        - foobar
    Middleware10:
      headers:
        customRequestHeaders:
          name0: foobar
          name1: foobar
        customResponseHeaders:
          name0: foobar
          name1: foobar
        accessControlAllowCredentials: true
        accessControlAllowHeaders:
        - foobar
        - foobar
        accessControlAllowMethods:
        - foobar
        - foobar
        accessControlAllowOrigin: foobar
        accessControlAllowOriginList:
        - foobar
        - foobar
        accessControlAllowOriginListRegex:
        - foobar
        - foobar
        accessControlExposeHeaders:
        - foobar
        - foobar
        accessControlMaxAge: 42
        addVaryHeader: true
        allowedHosts:
        - foobar
        - foobar
        hostsProxyHeaders:
        - foobar
        - foobar
        sslRedirect: true
        sslTemporaryRedirect: true
        sslHost: foobar
        sslProxyHeaders:
          name0: foobar
          name1: foobar
        sslForceHost: true
        stsSeconds: 42
        stsIncludeSubdomains: true
        stsPreload: true
        forceSTSHeader: true
        frameDeny: true
        customFrameOptionsValue: foobar
        contentTypeNosniff: true
        browserXssFilter: true
        customBrowserXSSValue: foobar
        contentSecurityPolicy: foobar
        publicKey: foobar
        referrerPolicy: foobar
        featurePolicy: foobar
        isDevelopment: true
    Middleware11:
      ipWhiteList:
        sourceRange:
        - foobar
        - foobar
        ipStrategy:
          depth: 42
          excludedIPs:
          - foobar
          - foobar
    Middleware12:
      inFlightReq:
        amount: 42
        sourceCriterion:
          ipStrategy:
            depth: 42
            excludedIPs:
            - foobar
            - foobar
          requestHeaderName: foobar
          requestHost: true
    Middleware13:
      passTLSClientCert:
        pem: true
        info:
          notAfter: true
          notBefore: true
          sans: true
          subject:
            country: true
            province: true
            locality: true
            organization: true
            commonName: true
            serialNumber: true
            domainComponent: true
          issuer:
            country: true
            province: true
            locality: true
            organization: true
            commonName: true
            serialNumber: true
            domainComponent: true
          serialNumber: true
    Middleware14:
      plugin:
        PluginConf:
          foo: bar
    Middleware15:
      rateLimit:
        average: 42
        period: 42
        burst: 42
        sourceCriterion:
          ipStrategy:
            depth: 42
            excludedIPs:
            - foobar
            - foobar
          requestHeaderName: foobar
          requestHost: true
    Middleware16:
      redirectRegex:
        regex: foobar
        replacement: foobar
        permanent: true
    Middleware17:
      redirectScheme:
        scheme: foobar
        port: foobar
        permanent: true
    Middleware18:
      replacePath:
        path: foobar
    Middleware19:
      replacePathRegex:
        regex: foobar
        replacement: foobar
    Middleware20:
      retry:
        attempts: 42
        initialInterval: 42
    Middleware21:
      stripPrefix:
        prefixes:
        - foobar
        - foobar
        forceSlash: true
    Middleware22:
      stripPrefixRegex:
        regex:
        - foobar
        - foobar
  serversTransports:
    ServersTransport0:
      serverName: foobar
      insecureSkipVerify: true
      rootCAs:
      - foobar
      - foobar
      certificates:
      - certFile: foobar
        keyFile: foobar
      - certFile: foobar
        keyFile: foobar
      maxIdleConnsPerHost: 42
      forwardingTimeouts:
        dialTimeout: 42s
        responseHeaderTimeout: 42s
        idleConnTimeout: 42s
    ServersTransport1:
      serverName: foobar
      insecureSkipVerify: true
      rootCAs:
      - foobar
      - foobar
      certificates:
      - certFile: foobar
        keyFile: foobar
      - certFile: foobar
        keyFile: foobar
      maxIdleConnsPerHost: 42
      forwardingTimeouts:
        dialTimeout: 42s
        responseHeaderTimeout: 42s
        idleConnTimeout: 42s
tcp:
  routers:
    TCPRouter0:
      entryPoints:
      - foobar
      - foobar
      service: foobar
      rule: foobar
      tls:
        passthrough: true
        options: foobar
        certResolver: foobar
        domains:
        - main: foobar
          sans:
          - foobar
          - foobar
        - main: foobar
          sans:
          - foobar
          - foobar
    TCPRouter1:
      entryPoints:
      - foobar
      - foobar
      service: foobar
      rule: foobar
      tls:
        passthrough: true
        options: foobar
        certResolver: foobar
        domains:
        - main: foobar
          sans:
          - foobar
          - foobar
        - main: foobar
          sans:
          - foobar
          - foobar
  services:
    TCPService01:
      loadBalancer:
        terminationDelay: 42
        proxyProtocol:
          version: 42
        servers:
        - address: foobar
        - address: foobar
    TCPService02:
      weighted:
        services:
        - name: foobar
          weight: 42
        - name: foobar
          weight: 42
udp:
  routers:
    UDPRouter0:
      entryPoints:
      - foobar
      - foobar
      service: foobar
    UDPRouter1:
      entryPoints:
      - foobar
      - foobar
      service: foobar
  services:
    UDPService01:
      loadBalancer:
        servers:
        - address: foobar
        - address: foobar
    UDPService02:
      weighted:
        services:
        - name: foobar
          weight: 42
        - name: foobar
          weight: 42
tls:
  certificates:
  - certFile: foobar
    keyFile: foobar
    stores:
    - foobar
    - foobar
  - certFile: foobar
    keyFile: foobar
    stores:
    - foobar
    - foobar
  options:
    Options0:
      minVersion: foobar
      maxVersion: foobar
      cipherSuites:
      - foobar
      - foobar
      curvePreferences:
      - foobar
      - foobar
      clientAuth:
        caFiles:
        - foobar
        - foobar
        clientAuthType: foobar
      sniStrict: true
      preferServerCipherSuites: true
    Options1:
      minVersion: foobar
      maxVersion: foobar
      cipherSuites:
      - foobar
      - foobar
      curvePreferences:
      - foobar
      - foobar
      clientAuth:
        caFiles:
        - foobar
        - foobar
        clientAuthType: foobar
      sniStrict: true
      preferServerCipherSuites: true
  stores:
    Store0:
      defaultCertificate:
        certFile: foobar
        keyFile: foobar
    Store1:
      defaultCertificate:
        certFile: foobar
        keyFile: foobar
[http]
  [http.routers]
    [http.routers.Router0]
      entryPoints = ["foobar", "foobar"]
      middlewares = ["foobar", "foobar"]
      service = "foobar"
      rule = "foobar"
      priority = 42
      [http.routers.Router0.tls]
        options = "foobar"
        certResolver = "foobar"

        [[http.routers.Router0.tls.domains]]
          main = "foobar"
          sans = ["foobar", "foobar"]

        [[http.routers.Router0.tls.domains]]
          main = "foobar"
          sans = ["foobar", "foobar"]
    [http.routers.Router1]
      entryPoints = ["foobar", "foobar"]
      middlewares = ["foobar", "foobar"]
      service = "foobar"
      rule = "foobar"
      priority = 42
      [http.routers.Router1.tls]
        options = "foobar"
        certResolver = "foobar"

        [[http.routers.Router1.tls.domains]]
          main = "foobar"
          sans = ["foobar", "foobar"]

        [[http.routers.Router1.tls.domains]]
          main = "foobar"
          sans = ["foobar", "foobar"]
  [http.services]
    [http.services.Service01]
      [http.services.Service01.loadBalancer]
        passHostHeader = true
        serversTransport = "foobar"
        [http.services.Service01.loadBalancer.sticky]
          [http.services.Service01.loadBalancer.sticky.cookie]
            name = "foobar"
            secure = true
            httpOnly = true
            sameSite = "foobar"

        [[http.services.Service01.loadBalancer.servers]]
          url = "foobar"

        [[http.services.Service01.loadBalancer.servers]]
          url = "foobar"
        [http.services.Service01.loadBalancer.healthCheck]
          scheme = "foobar"
          path = "foobar"
          port = 42
          interval = "foobar"
          timeout = "foobar"
          hostname = "foobar"
          followRedirects = true
          [http.services.Service01.loadBalancer.healthCheck.headers]
            name0 = "foobar"
            name1 = "foobar"
        [http.services.Service01.loadBalancer.responseForwarding]
          flushInterval = "foobar"
    [http.services.Service02]
      [http.services.Service02.mirroring]
        service = "foobar"
        maxBodySize = 42

        [[http.services.Service02.mirroring.mirrors]]
          name = "foobar"
          percent = 42

        [[http.services.Service02.mirroring.mirrors]]
          name = "foobar"
          percent = 42
    [http.services.Service03]
      [http.services.Service03.weighted]

        [[http.services.Service03.weighted.services]]
          name = "foobar"
          weight = 42

        [[http.services.Service03.weighted.services]]
          name = "foobar"
          weight = 42
        [http.services.Service03.weighted.sticky]
          [http.services.Service03.weighted.sticky.cookie]
            name = "foobar"
            secure = true
            httpOnly = true
            sameSite = "foobar"
  [http.middlewares]
    [http.middlewares.Middleware00]
      [http.middlewares.Middleware00.addPrefix]
        prefix = "foobar"
    [http.middlewares.Middleware01]
      [http.middlewares.Middleware01.basicAuth]
        users = ["foobar", "foobar"]
        usersFile = "foobar"
        realm = "foobar"
        removeHeader = true
        headerField = "foobar"
    [http.middlewares.Middleware02]
      [http.middlewares.Middleware02.buffering]
        maxRequestBodyBytes = 42
        memRequestBodyBytes = 42
        maxResponseBodyBytes = 42
        memResponseBodyBytes = 42
        retryExpression = "foobar"
    [http.middlewares.Middleware03]
      [http.middlewares.Middleware03.chain]
        middlewares = ["foobar", "foobar"]
    [http.middlewares.Middleware04]
      [http.middlewares.Middleware04.circuitBreaker]
        expression = "foobar"
    [http.middlewares.Middleware05]
      [http.middlewares.Middleware05.compress]
        excludedContentTypes = ["foobar", "foobar"]
    [http.middlewares.Middleware06]
      [http.middlewares.Middleware06.contentType]
        autoDetect = true
    [http.middlewares.Middleware07]
      [http.middlewares.Middleware07.digestAuth]
        users = ["foobar", "foobar"]
        usersFile = "foobar"
        removeHeader = true
        realm = "foobar"
        headerField = "foobar"
    [http.middlewares.Middleware08]
      [http.middlewares.Middleware08.errors]
        status = ["foobar", "foobar"]
        service = "foobar"
        query = "foobar"
    [http.middlewares.Middleware09]
      [http.middlewares.Middleware09.forwardAuth]
        address = "foobar"
        trustForwardHeader = true
        authResponseHeaders = ["foobar", "foobar"]
        authResponseHeadersRegex = "foobar"
        authRequestHeaders = ["foobar", "foobar"]
        [http.middlewares.Middleware09.forwardAuth.tls]
          ca = "foobar"
          caOptional = true
          cert = "foobar"
          key = "foobar"
          insecureSkipVerify = true
    [http.middlewares.Middleware10]
      [http.middlewares.Middleware10.headers]
        accessControlAllowCredentials = true
        accessControlAllowHeaders = ["foobar", "foobar"]
        accessControlAllowMethods = ["foobar", "foobar"]
        accessControlAllowOrigin = "foobar"
        accessControlAllowOriginList = ["foobar", "foobar"]
        accessControlAllowOriginListRegex = ["foobar", "foobar"]
        accessControlExposeHeaders = ["foobar", "foobar"]
        accessControlMaxAge = 42
        addVaryHeader = true
        allowedHosts = ["foobar", "foobar"]
        hostsProxyHeaders = ["foobar", "foobar"]
        sslRedirect = true
        sslTemporaryRedirect = true
        sslHost = "foobar"
        sslForceHost = true
        stsSeconds = 42
        stsIncludeSubdomains = true
        stsPreload = true
        forceSTSHeader = true
        frameDeny = true
        customFrameOptionsValue = "foobar"
        contentTypeNosniff = true
        browserXssFilter = true
        customBrowserXSSValue = "foobar"
        contentSecurityPolicy = "foobar"
        publicKey = "foobar"
        referrerPolicy = "foobar"
        featurePolicy = "foobar"
        isDevelopment = true
        [http.middlewares.Middleware10.headers.customRequestHeaders]
          name0 = "foobar"
          name1 = "foobar"
        [http.middlewares.Middleware10.headers.customResponseHeaders]
          name0 = "foobar"
          name1 = "foobar"
        [http.middlewares.Middleware10.headers.sslProxyHeaders]
          name0 = "foobar"
          name1 = "foobar"
    [http.middlewares.Middleware11]
      [http.middlewares.Middleware11.ipWhiteList]
        sourceRange = ["foobar", "foobar"]
        [http.middlewares.Middleware11.ipWhiteList.ipStrategy]
          depth = 42
          excludedIPs = ["foobar", "foobar"]
    [http.middlewares.Middleware12]
      [http.middlewares.Middleware12.inFlightReq]
        amount = 42
        [http.middlewares.Middleware12.inFlightReq.sourceCriterion]
          requestHeaderName = "foobar"
          requestHost = true
          [http.middlewares.Middleware12.inFlightReq.sourceCriterion.ipStrategy]
            depth = 42
            excludedIPs = ["foobar", "foobar"]
    [http.middlewares.Middleware13]
      [http.middlewares.Middleware13.passTLSClientCert]
        pem = true
        [http.middlewares.Middleware13.passTLSClientCert.info]
          notAfter = true
          notBefore = true
          sans = true
          serialNumber = true
          [http.middlewares.Middleware13.passTLSClientCert.info.subject]
            country = true
            province = true
            locality = true
            organization = true
            commonName = true
            serialNumber = true
            domainComponent = true
          [http.middlewares.Middleware13.passTLSClientCert.info.issuer]
            country = true
            province = true
            locality = true
            organization = true
            commonName = true
            serialNumber = true
            domainComponent = true
    [http.middlewares.Middleware14]
      [http.middlewares.Middleware14.plugin]
        [http.middlewares.Middleware14.plugin.PluginConf]
          foo = "bar"
    [http.middlewares.Middleware15]
      [http.middlewares.Middleware15.rateLimit]
        average = 42
        period = 42
        burst = 42
        [http.middlewares.Middleware15.rateLimit.sourceCriterion]
          requestHeaderName = "foobar"
          requestHost = true
          [http.middlewares.Middleware15.rateLimit.sourceCriterion.ipStrategy]
            depth = 42
            excludedIPs = ["foobar", "foobar"]
    [http.middlewares.Middleware16]
      [http.middlewares.Middleware16.redirectRegex]
        regex = "foobar"
        replacement = "foobar"
        permanent = true
    [http.middlewares.Middleware17]
      [http.middlewares.Middleware17.redirectScheme]
        scheme = "foobar"
        port = "foobar"
        permanent = true
    [http.middlewares.Middleware18]
      [http.middlewares.Middleware18.replacePath]
        path = "foobar"
    [http.middlewares.Middleware19]
      [http.middlewares.Middleware19.replacePathRegex]
        regex = "foobar"
        replacement = "foobar"
    [http.middlewares.Middleware20]
      [http.middlewares.Middleware20.retry]
        attempts = 42
        initialInterval = 42
    [http.middlewares.Middleware21]
      [http.middlewares.Middleware21.stripPrefix]
        prefixes = ["foobar", "foobar"]
        forceSlash = true
    [http.middlewares.Middleware22]
      [http.middlewares.Middleware22.stripPrefixRegex]
        regex = ["foobar", "foobar"]
  [http.serversTransports]
    [http.serversTransports.ServersTransport0]
      serverName = "foobar"
      insecureSkipVerify = true
      rootCAs = ["foobar", "foobar"]
      maxIdleConnsPerHost = 42

      [[http.serversTransports.ServersTransport0.certificates]]
        certFile = "foobar"
        keyFile = "foobar"

      [[http.serversTransports.ServersTransport0.certificates]]
        certFile = "foobar"
        keyFile = "foobar"
      [http.serversTransports.ServersTransport0.forwardingTimeouts]
        dialTimeout = "42s"
        responseHeaderTimeout = "42s"
        idleConnTimeout = "42s"
    [http.serversTransports.ServersTransport1]
      serverName = "foobar"
      insecureSkipVerify = true
      rootCAs = ["foobar", "foobar"]
      maxIdleConnsPerHost = 42

      [[http.serversTransports.ServersTransport1.certificates]]
        certFile = "foobar"
        keyFile = "foobar"

      [[http.serversTransports.ServersTransport1.certificates]]
        certFile = "foobar"
        keyFile = "foobar"
      [http.serversTransports.ServersTransport1.forwardingTimeouts]
        dialTimeout = "42s"
        responseHeaderTimeout = "42s"
        idleConnTimeout = "42s"

[tcp]
  [tcp.routers]
    [tcp.routers.TCPRouter0]
      entryPoints = ["foobar", "foobar"]
      service = "foobar"
      rule = "foobar"
      [tcp.routers.TCPRouter0.tls]
        passthrough = true
        options = "foobar"
        certResolver = "foobar"

        [[tcp.routers.TCPRouter0.tls.domains]]
          main = "foobar"
          sans = ["foobar", "foobar"]

        [[tcp.routers.TCPRouter0.tls.domains]]
          main = "foobar"
          sans = ["foobar", "foobar"]
    [tcp.routers.TCPRouter1]
      entryPoints = ["foobar", "foobar"]
      service = "foobar"
      rule = "foobar"
      [tcp.routers.TCPRouter1.tls]
        passthrough = true
        options = "foobar"
        certResolver = "foobar"

        [[tcp.routers.TCPRouter1.tls.domains]]
          main = "foobar"
          sans = ["foobar", "foobar"]

        [[tcp.routers.TCPRouter1.tls.domains]]
          main = "foobar"
          sans = ["foobar", "foobar"]
  [tcp.services]
    [tcp.services.TCPService01]
      [tcp.services.TCPService01.loadBalancer]
        terminationDelay = 42
        [tcp.services.TCPService01.loadBalancer.proxyProtocol]
          version = 42

        [[tcp.services.TCPService01.loadBalancer.servers]]
          address = "foobar"

        [[tcp.services.TCPService01.loadBalancer.servers]]
          address = "foobar"
    [tcp.services.TCPService02]
      [tcp.services.TCPService02.weighted]

        [[tcp.services.TCPService02.weighted.services]]
          name = "foobar"
          weight = 42

        [[tcp.services.TCPService02.weighted.services]]
          name = "foobar"
          weight = 42

[udp]
  [udp.routers]
    [udp.routers.UDPRouter0]
      entryPoints = ["foobar", "foobar"]
      service = "foobar"
    [udp.routers.UDPRouter1]
      entryPoints = ["foobar", "foobar"]
      service = "foobar"
  [udp.services]
    [udp.services.UDPService01]
      [udp.services.UDPService01.loadBalancer]

        [[udp.services.UDPService01.loadBalancer.servers]]
          address = "foobar"

        [[udp.services.UDPService01.loadBalancer.servers]]
          address = "foobar"
    [udp.services.UDPService02]
      [udp.services.UDPService02.weighted]

        [[udp.services.UDPService02.weighted.services]]
          name = "foobar"
          weight = 42

        [[udp.services.UDPService02.weighted.services]]
          name = "foobar"
          weight = 42

[tls]

  [[tls.certificates]]
    certFile = "foobar"
    keyFile = "foobar"
    stores = ["foobar", "foobar"]

  [[tls.certificates]]
    certFile = "foobar"
    keyFile = "foobar"
    stores = ["foobar", "foobar"]
  [tls.options]
    [tls.options.Options0]
      minVersion = "foobar"
      maxVersion = "foobar"
      cipherSuites = ["foobar", "foobar"]
      curvePreferences = ["foobar", "foobar"]
      sniStrict = true
      preferServerCipherSuites = true
      [tls.options.Options0.clientAuth]
        caFiles = ["foobar", "foobar"]
        clientAuthType = "foobar"
    [tls.options.Options1]
      minVersion = "foobar"
      maxVersion = "foobar"
      cipherSuites = ["foobar", "foobar"]
      curvePreferences = ["foobar", "foobar"]
      sniStrict = true
      preferServerCipherSuites = true
      [tls.options.Options1.clientAuth]
        caFiles = ["foobar", "foobar"]
        clientAuthType = "foobar"
  [tls.stores]
    [tls.stores.Store0]
      [tls.stores.Store0.defaultCertificate]
        certFile = "foobar"
        keyFile = "foobar"
    [tls.stores.Store1]
      [tls.stores.Store1.defaultCertificate]
        certFile = "foobar"
        keyFile = "foobar"