Skip to content

Commit 9d0f75d

Browse files
thetechnickpleshakov
authored andcommitted
Add proxy_hide_header and proxy_pass_header directives (#88)
* Add proxy_hide_header and proxy_pass_header directives
1 parent 9c72c30 commit 9d0f75d

File tree

5 files changed

+40
-1
lines changed

5 files changed

+40
-1
lines changed

nginx-controller/controller/controller.go

+14
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,20 @@ func (lbc *LoadBalancerController) syncCfgm(key string) {
315315
if proxyReadTimeout, exists := cfgm.Data["proxy-read-timeout"]; exists {
316316
cfg.ProxyReadTimeout = proxyReadTimeout
317317
}
318+
if proxyHideHeaders, exists, err := nginx.GetMapKeyAsStringSlice(cfgm.Data, "proxy-hide-headers", cfgm); exists {
319+
if err != nil {
320+
glog.Error(err)
321+
} else {
322+
cfg.ProxyHideHeaders = proxyHideHeaders
323+
}
324+
}
325+
if proxyPassHeaders, exists, err := nginx.GetMapKeyAsStringSlice(cfgm.Data, "proxy-pass-headers", cfgm); exists {
326+
if err != nil {
327+
glog.Error(err)
328+
} else {
329+
cfg.ProxyPassHeaders = proxyPassHeaders
330+
}
331+
}
318332
if clientMaxBodySize, exists := cfgm.Data["client-max-body-size"]; exists {
319333
cfg.ClientMaxBodySize = clientMaxBodySize
320334
}

nginx-controller/nginx/config.go

+2
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ type Config struct {
1414
ProxyBufferSize string
1515
ProxyMaxTempFileSize string
1616
ProxyProtocol bool
17+
ProxyHideHeaders []string
18+
ProxyPassHeaders []string
1719
HSTS bool
1820
HSTSMaxAge int64
1921
HSTSIncludeSubdomains bool

nginx-controller/nginx/configurator.go

+18
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ func (cnf *Configurator) generateNginxCfg(ingEx *IngressEx, pems map[string]stri
112112
RealIPHeader: ingCfg.RealIPHeader,
113113
SetRealIPFrom: ingCfg.SetRealIPFrom,
114114
RealIPRecursive: ingCfg.RealIPRecursive,
115+
ProxyHideHeaders: ingCfg.ProxyHideHeaders,
116+
ProxyPassHeaders: ingCfg.ProxyPassHeaders,
115117
}
116118

117119
if pemFile, ok := pems[serverName]; ok {
@@ -160,6 +162,8 @@ func (cnf *Configurator) generateNginxCfg(ingEx *IngressEx, pems map[string]stri
160162
RealIPHeader: ingCfg.RealIPHeader,
161163
SetRealIPFrom: ingCfg.SetRealIPFrom,
162164
RealIPRecursive: ingCfg.RealIPRecursive,
165+
ProxyHideHeaders: ingCfg.ProxyHideHeaders,
166+
ProxyPassHeaders: ingCfg.ProxyPassHeaders,
163167
}
164168

165169
if pemFile, ok := pems[emptyHost]; ok {
@@ -190,6 +194,20 @@ func (cnf *Configurator) createConfig(ingEx *IngressEx) Config {
190194
if proxyReadTimeout, exists := ingEx.Ingress.Annotations["nginx.org/proxy-read-timeout"]; exists {
191195
ingCfg.ProxyReadTimeout = proxyReadTimeout
192196
}
197+
if proxyHideHeaders, exists, err := GetMapKeyAsStringSlice(ingEx.Ingress.Annotations, "nginx.org/proxy-hide-headers", ingEx.Ingress); exists {
198+
if err != nil {
199+
glog.Error(err)
200+
} else {
201+
ingCfg.ProxyHideHeaders = proxyHideHeaders
202+
}
203+
}
204+
if proxyPassHeaders, exists, err := GetMapKeyAsStringSlice(ingEx.Ingress.Annotations, "nginx.org/proxy-pass-headers", ingEx.Ingress); exists {
205+
if err != nil {
206+
glog.Error(err)
207+
} else {
208+
ingCfg.ProxyPassHeaders = proxyPassHeaders
209+
}
210+
}
193211
if clientMaxBodySize, exists := ingEx.Ingress.Annotations["nginx.org/client-max-body-size"]; exists {
194212
ingCfg.ClientMaxBodySize = clientMaxBodySize
195213
}

nginx-controller/nginx/ingress.tmpl

+4-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ server {
2020
{{if $server.Name}}
2121
server_name {{$server.Name}};
2222
{{end}}
23-
23+
{{range $proxyHideHeader := $server.ProxyHideHeaders}}
24+
proxy_hide_header {{$proxyHideHeader}};{{end}}
25+
{{range $proxyPassHeader := $server.ProxyPassHeaders}}
26+
proxy_pass_header {{$proxyPassHeader}};{{end}}
2427
{{if $server.SSL}}
2528
if ($scheme = http) {
2629
return 301 https://$host$request_uri;

nginx-controller/nginx/nginx.go

+2
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ type Server struct {
4848
HSTS bool
4949
HSTSMaxAge int64
5050
HSTSIncludeSubdomains bool
51+
ProxyHideHeaders []string
52+
ProxyPassHeaders []string
5153

5254
// http://nginx.org/en/docs/http/ngx_http_realip_module.html
5355
RealIPHeader string

0 commit comments

Comments
 (0)