diff --git a/docs/configuration/backends/docker.md b/docs/configuration/backends/docker.md index a12fa88b0..e27abae5c 100644 --- a/docs/configuration/backends/docker.md +++ b/docs/configuration/backends/docker.md @@ -237,6 +237,7 @@ Services labels can be used for overriding default behaviour | `traefik..frontend.redirect.regex=^http://localhost/(.*)` | Overrides `traefik.frontend.redirect.regex`. | | `traefik..frontend.redirect.replacement=http://mydomain/$1` | Overrides `traefik.frontend.redirect.replacement`. | | `traefik..frontend.rule` | Overrides `traefik.frontend.rule`. | +| `traefik..frontend.whitelistSourceRange:RANGE` | Overrides `traefik.frontend.whitelistSourceRange`. | #### Security Headers diff --git a/provider/docker/config.go b/provider/docker/config.go index 944d937af..a3c92de4f 100644 --- a/provider/docker/config.go +++ b/provider/docker/config.go @@ -105,24 +105,25 @@ func (p *Provider) buildConfiguration(containersInspected []dockerData) *types.C "getServiceProtocol": getFuncServiceStringLabel(label.SuffixProtocol, label.DefaultProtocol), "getServiceWeight": getFuncServiceStringLabel(label.SuffixWeight, label.DefaultWeight), // Services - Frontend functions - "getServiceEntryPoints": getFuncServiceSliceStringLabel(label.SuffixFrontendEntryPoints), - "getServiceBasicAuth": getFuncServiceSliceStringLabel(label.SuffixFrontendAuthBasic), - "getServiceFrontendRule": p.getServiceFrontendRule, - "getServicePassHostHeader": getFuncServiceStringLabel(label.SuffixFrontendPassHostHeader, label.DefaultPassHostHeader), - "getServicePassTLSCert": getFuncServiceBoolLabel(label.SuffixFrontendPassTLSCert, label.DefaultPassTLSCert), - "getServicePriority": getFuncServiceStringLabel(label.SuffixFrontendPriority, label.DefaultFrontendPriority), - "hasServiceRedirect": hasServiceRedirect, - "getServiceRedirectEntryPoint": getFuncServiceStringLabel(label.SuffixFrontendRedirectEntryPoint, label.DefaultFrontendRedirectEntryPoint), - "getServiceRedirectReplacement": getFuncServiceStringLabel(label.SuffixFrontendRedirectReplacement, ""), - "getServiceRedirectRegex": getFuncServiceStringLabel(label.SuffixFrontendRedirectRegex, ""), - "hasServiceRequestHeaders": hasFuncServiceLabel(label.SuffixFrontendRequestHeaders), - "getServiceRequestHeaders": getFuncServiceMapLabel(label.SuffixFrontendRequestHeaders), - "hasServiceResponseHeaders": hasFuncServiceLabel(label.SuffixFrontendResponseHeaders), - "getServiceResponseHeaders": getFuncServiceMapLabel(label.SuffixFrontendResponseHeaders), - "hasServiceErrorPages": hasServiceErrorPages, - "getServiceErrorPages": getServiceErrorPages, - "hasServiceRateLimits": hasFuncServiceLabel(label.SuffixFrontendRateLimitExtractorFunc), - "getServiceRateLimits": getServiceRateLimits, + "getServiceEntryPoints": getFuncServiceSliceStringLabel(label.SuffixFrontendEntryPoints), + "getServiceWhitelistSourceRange": getFuncServiceSliceStringLabel(label.TraefikFrontendWhitelistSourceRange), + "getServiceBasicAuth": getFuncServiceSliceStringLabel(label.SuffixFrontendAuthBasic), + "getServiceFrontendRule": p.getServiceFrontendRule, + "getServicePassHostHeader": getFuncServiceStringLabel(label.SuffixFrontendPassHostHeader, label.DefaultPassHostHeader), + "getServicePassTLSCert": getFuncServiceBoolLabel(label.SuffixFrontendPassTLSCert, label.DefaultPassTLSCert), + "getServicePriority": getFuncServiceStringLabel(label.SuffixFrontendPriority, label.DefaultFrontendPriority), + "hasServiceRedirect": hasServiceRedirect, + "getServiceRedirectEntryPoint": getFuncServiceStringLabel(label.SuffixFrontendRedirectEntryPoint, label.DefaultFrontendRedirectEntryPoint), + "getServiceRedirectReplacement": getFuncServiceStringLabel(label.SuffixFrontendRedirectReplacement, ""), + "getServiceRedirectRegex": getFuncServiceStringLabel(label.SuffixFrontendRedirectRegex, ""), + "hasServiceRequestHeaders": hasFuncServiceLabel(label.SuffixFrontendRequestHeaders), + "getServiceRequestHeaders": getFuncServiceMapLabel(label.SuffixFrontendRequestHeaders), + "hasServiceResponseHeaders": hasFuncServiceLabel(label.SuffixFrontendResponseHeaders), + "getServiceResponseHeaders": getFuncServiceMapLabel(label.SuffixFrontendResponseHeaders), + "hasServiceErrorPages": hasServiceErrorPages, + "getServiceErrorPages": getServiceErrorPages, + "hasServiceRateLimits": hasFuncServiceLabel(label.SuffixFrontendRateLimitExtractorFunc), + "getServiceRateLimits": getServiceRateLimits, } // filter containers filteredContainers := fun.Filter(func(container dockerData) bool { diff --git a/templates/docker.tmpl b/templates/docker.tmpl index 5a20607e0..7ea723e2a 100644 --- a/templates/docker.tmpl +++ b/templates/docker.tmpl @@ -66,8 +66,8 @@ "{{.}}", {{end}}] - {{if getWhitelistSourceRange $container}} - whitelistSourceRange = [{{range getWhitelistSourceRange $container}} + {{if getServiceWhitelistSourceRange $container $serviceName}} + whitelistSourceRange = [{{range getServiceWhitelistSourceRange $container $serviceName}} "{{.}}", {{end}}] {{end}}