diff --git a/internal/ingress/controller/config/config.go b/internal/ingress/controller/config/config.go index 67c537abe..ae07cf558 100644 --- a/internal/ingress/controller/config/config.go +++ b/internal/ingress/controller/config/config.go @@ -166,10 +166,19 @@ type Configuration struct { // http://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout ClientBodyTimeout int `json:"client-body-timeout,omitempty"` - // DisableAccessLog disables the Access Log globally from NGINX ingress controller - //http://nginx.org/en/docs/http/ngx_http_log_module.html + // DisableAccessLog disables the Access Log globally for both HTTP and Stream contexts from NGINX ingress controller + // http://nginx.org/en/docs/http/ngx_http_log_module.html + // http://nginx.org/en/docs/stream/ngx_stream_log_module.html DisableAccessLog bool `json:"disable-access-log,omitempty"` + // DisableHTTPAccessLog disables the Access Log for http context globally from NGINX ingress controller + // http://nginx.org/en/docs/http/ngx_http_log_module.html + DisableHTTPAccessLog bool `json:"disable-http-access-log,omitempty"` + + // DisableStreamAccessLog disables the Access Log for stream context globally from NGINX ingress controller + // http://nginx.org/en/docs/stream/ngx_stream_log_module.html + DisableStreamAccessLog bool `json:"disable-stream-access-log,omitempty"` + // DisableIpv6DNS disables IPv6 for nginx resolver DisableIpv6DNS bool `json:"disable-ipv6-dns"` diff --git a/rootfs/etc/nginx/template/nginx.tmpl b/rootfs/etc/nginx/template/nginx.tmpl index 1091a06d3..a3e932bbf 100755 --- a/rootfs/etc/nginx/template/nginx.tmpl +++ b/rootfs/etc/nginx/template/nginx.tmpl @@ -338,7 +338,7 @@ http { default 1; } - {{ if $cfg.DisableAccessLog }} + {{ if or $cfg.DisableAccessLog $cfg.DisableHTTPAccessLog }} access_log off; {{ else }} {{ if $cfg.EnableSyslog }} @@ -702,7 +702,7 @@ stream { log_format log_stream '{{ $cfg.LogFormatStream }}'; - {{ if $cfg.DisableAccessLog }} + {{ if or $cfg.DisableAccessLog $cfg.DisableStreamAccessLog }} access_log off; {{ else }} access_log {{ or $cfg.StreamAccessLogPath $cfg.AccessLogPath }} log_stream {{ $cfg.AccessLogParams }}; diff --git a/test/e2e/annotations/disableaccesslog.go b/test/e2e/annotations/disableaccesslog.go new file mode 100644 index 000000000..9a83d7c5d --- /dev/null +++ b/test/e2e/annotations/disableaccesslog.go @@ -0,0 +1,81 @@ +/* +Copyright 2020 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package annotations + +import ( + "strings" + + "github.com/onsi/ginkgo" + + "k8s.io/ingress-nginx/test/e2e/framework" +) + +var _ = framework.DescribeAnnotation("disable-access-log disable-http-access-log disable-stream-access-log", func() { + f := framework.NewDefaultFramework("disableaccesslog") + + ginkgo.BeforeEach(func() { + f.NewEchoDeployment() + }) + + ginkgo.It("disable-access-log set access_log off", func() { + host := "disableaccesslog.foo.com" + annotations := map[string]string{ + "nginx.ingress.kubernetes.io/disable-access-log": "true", + } + + ing := framework.NewSingleIngress(host, "/", host, f.Namespace, framework.EchoService, 80, annotations) + f.EnsureIngress(ing) + + f.WaitForNginxServer(host, + func(server string) bool { + str := ` + multiline + string.` + return strings.Contains(server, `access_log off;`) + }) + }) + + ginkgo.It("disable-http-access-log set access_log off", func() { + host := "disablehttpaccesslog.foo.com" + annotations := map[string]string{ + "nginx.ingress.kubernetes.io/disable-http-access-log": "true", + } + + ing := framework.NewSingleIngress(host, "/", host, f.Namespace, framework.EchoService, 80, annotations) + f.EnsureIngress(ing) + + f.WaitForNginxServer(host, + func(server string) bool { + return strings.Contains(server, `access_log off;`) + }) + }) + + ginkgo.It("disable-stream-access-log set access_log off", func() { + host := "disablehttpaccesslog.foo.com" + annotations := map[string]string{ + "nginx.ingress.kubernetes.io/disable-stream-access-log": "true", + } + + ing := framework.NewSingleIngress(host, "/", host, f.Namespace, framework.EchoService, 80, annotations) + f.EnsureIngress(ing) + + f.WaitForNginxServer(host, + func(server string) bool { + return strings.Contains(server, `access_log off;`) + }) + }) +})