{{$backendServers := .Servers}} [backends]{{range $backendName, $backend := .Backends}} {{if hasCircuitBreakerLabel $backend}} [backends.backend-{{$backendName}}.circuitbreaker] expression = "{{getCircuitBreakerExpression $backend}}" {{end}} {{if hasLoadBalancerLabel $backend}} [backends.backend-{{$backendName}}.loadbalancer] method = "{{getLoadBalancerMethod $backend}}" sticky = {{getSticky $backend}} {{if hasStickinessLabel $backend}} [backends.backend-{{$backendName}}.loadBalancer.stickiness] cookieName = "{{getStickinessCookieName $backend}}" {{end}} {{end}} {{if hasMaxConnLabels $backend}} [backends.backend-{{$backendName}}.maxconn] amount = {{getMaxConnAmount $backend}} extractorfunc = "{{getMaxConnExtractorFunc $backend}}" {{end}} {{$servers := index $backendServers $backendName}} {{range $serverName, $server := $servers}} {{if hasServices $server}} {{$services := getServiceNames $server}} {{range $serviceIndex, $serviceName := $services}} [backends.backend-{{getServiceBackend $server $serviceName}}.servers.service-{{$serverName}}] url = "{{getServiceProtocol $server $serviceName}}://{{getIPAddress $server}}:{{getServicePort $server $serviceName}}" weight = {{getServiceWeight $server $serviceName}} {{end}} {{else}} [backends.backend-{{$backendName}}.servers.server-{{$server.Name | replace "/" "" | replace "." "-"}}] url = "{{getProtocol $server}}://{{getIPAddress $server}}:{{getPort $server}}" weight = {{getWeight $server}} {{end}} {{end}} {{end}} [frontends]{{range $frontend, $containers := .Frontends}} {{$container := index $containers 0}} {{if hasServices $container}} {{$services := getServiceNames $container}} {{range $serviceIndex, $serviceName := $services}} [frontends."frontend-{{getServiceBackend $container $serviceName}}"] backend = "backend-{{getServiceBackend $container $serviceName}}" passHostHeader = {{getServicePassHostHeader $container $serviceName}} {{if getWhitelistSourceRange $container}} whitelistSourceRange = [{{range getWhitelistSourceRange $container}} "{{.}}", {{end}}] {{end}} priority = {{getServicePriority $container $serviceName}} entryPoints = [{{range getServiceEntryPoints $container $serviceName}} "{{.}}", {{end}}] basicAuth = [{{range getServiceBasicAuth $container $serviceName}} "{{.}}", {{end}}] {{if hasServiceRedirect $container $serviceName}} [frontends."frontend-{{getServiceBackend $container $serviceName}}".redirect] entryPoint = "{{getServiceRedirectEntryPoint $container $serviceName}}" regex = "{{getServiceRedirectRegex $container $serviceName}}" replacement = "{{getServiceRedirectReplacement $container $serviceName}}" {{end}} [frontends."frontend-{{getServiceBackend $container $serviceName}}".routes."service-{{$serviceName | replace "/" "" | replace "." "-"}}"] rule = "{{getServiceFrontendRule $container $serviceName}}" {{if hasServiceRequestHeaders $container $serviceName}} [frontends."frontend-{{getServiceBackend $container $serviceName}}".headers.customrequestheaders] {{range $k, $v := getServiceRequestHeaders $container $serviceName}} {{$k}} = "{{$v}}" {{end}} {{end}} {{if hasServiceResponseHeaders $container $serviceName}} [frontends."frontend-{{getServiceBackend $container $serviceName}}".headers.customresponseheaders] {{range $k, $v := getServiceResponseHeaders $container $serviceName}} {{$k}} = "{{$v}}" {{end}} {{end}} {{end}} {{else}} [frontends."frontend-{{$frontend}}"] backend = "backend-{{getBackend $container}}" passHostHeader = {{getPassHostHeader $container}} {{if getWhitelistSourceRange $container}} whitelistSourceRange = [{{range getWhitelistSourceRange $container}} "{{.}}", {{end}}] {{end}} priority = {{getPriority $container}} entryPoints = [{{range getEntryPoints $container}} "{{.}}", {{end}}] basicAuth = [{{range getBasicAuth $container}} "{{.}}", {{end}}] {{if hasRedirect $container}} [frontends."frontend-{{$frontend}}".redirect] entryPoint = "{{getRedirectEntryPoint $container}}" regex = "{{getRedirectRegex $container}}" replacement = "{{getRedirectReplacement $container}}" {{end}} [frontends."frontend-{{$frontend}}".headers] {{if hasSSLRedirectHeaders $container}} SSLRedirect = {{getSSLRedirectHeaders $container}} {{end}} {{if hasSSLTemporaryRedirectHeaders $container}} SSLTemporaryRedirect = {{getSSLTemporaryRedirectHeaders $container}} {{end}} {{if hasSSLHostHeaders $container}} SSLHost = "{{getSSLHostHeaders $container}}" {{end}} {{if hasSTSSecondsHeaders $container}} STSSeconds = {{getSTSSecondsHeaders $container}} {{end}} {{if hasSTSIncludeSubdomainsHeaders $container}} STSIncludeSubdomains = {{getSTSIncludeSubdomainsHeaders $container}} {{end}} {{if hasSTSPreloadHeaders $container}} STSPreload = {{getSTSPreloadHeaders $container}} {{end}} {{if hasForceSTSHeaderHeaders $container}} ForceSTSHeader = {{getForceSTSHeaderHeaders $container}} {{end}} {{if hasFrameDenyHeaders $container}} FrameDeny = {{getFrameDenyHeaders $container}} {{end}} {{if hasCustomFrameOptionsValueHeaders $container}} CustomFrameOptionsValue = "{{getCustomFrameOptionsValueHeaders $container}}" {{end}} {{if hasContentTypeNosniffHeaders $container}} ContentTypeNosniff = {{getContentTypeNosniffHeaders $container}} {{end}} {{if hasBrowserXSSFilterHeaders $container}} BrowserXSSFilter = {{getBrowserXSSFilterHeaders $container}} {{end}} {{if hasContentSecurityPolicyHeaders $container}} ContentSecurityPolicy = "{{getContentSecurityPolicyHeaders $container}}" {{end}} {{if hasPublicKeyHeaders $container}} PublicKey = "{{getPublicKeyHeaders $container}}" {{end}} {{if hasReferrerPolicyHeaders $container}} ReferrerPolicy = "{{getReferrerPolicyHeaders $container}}" {{end}} {{if hasIsDevelopmentHeaders $container}} IsDevelopment = {{getIsDevelopmentHeaders $container}} {{end}} {{if hasRequestHeaders $container}} [frontends."frontend-{{$frontend}}".headers.customrequestheaders] {{range $k, $v := getRequestHeaders $container}} {{$k}} = "{{$v}}" {{end}} {{end}} {{if hasResponseHeaders $container}} [frontends."frontend-{{$frontend}}".headers.customresponseheaders] {{range $k, $v := getResponseHeaders $container}} {{$k}} = "{{$v}}" {{end}} {{end}} {{if hasAllowedHostsHeaders $container}} [frontends."frontend-{{$frontend}}".headers.AllowedHosts] {{range getAllowedHostsHeaders $container}} "{{.}}" {{end}} {{end}} {{if hasHostsProxyHeaders $container}} [frontends."frontend-{{$frontend}}".headers.HostsProxyHeaders] {{range getHostsProxyHeaders $container}} "{{.}}" {{end}} {{end}} {{if hasSSLProxyHeaders $container}} [frontends."frontend-{{$frontend}}".headers.SSLProxyHeaders] {{range $k, $v := getSSLProxyHeaders $container}} {{$k}} = "{{$v}}" {{end}} {{end}} [frontends."frontend-{{$frontend}}".routes."route-frontend-{{$frontend}}"] rule = "{{getFrontendRule $container}}" {{end}} {{end}}