diff --git a/internal/ingress/controller/controller.go b/internal/ingress/controller/controller.go index e7b460d6c0..98aa87b37d 100644 --- a/internal/ingress/controller/controller.go +++ b/internal/ingress/controller/controller.go @@ -996,11 +996,32 @@ func (n *NGINXController) createServers(data []*ingress.Ingress, Hostname: host, Locations: []*ingress.Location{ { - Path: rootLocation, - IsDefBackend: true, - Backend: un, - Proxy: ngxProxy, - Service: &apiv1.Service{}, + Path: rootLocation, + IsDefBackend: true, + Backend: un, + Service: &apiv1.Service{}, + BasicDigestAuth: anns.BasicDigestAuth, + ClientBodyBufferSize: anns.ClientBodyBufferSize, + ConfigurationSnippet: anns.ConfigurationSnippet, + CorsConfig: anns.CorsConfig, + ExternalAuth: anns.ExternalAuth, + Proxy: anns.Proxy, + RateLimit: anns.RateLimit, + Redirect: anns.Redirect, + Rewrite: anns.Rewrite, + UpstreamVhost: anns.UpstreamVhost, + Whitelist: anns.Whitelist, + Denied: anns.Denied, + XForwardedPrefix: anns.XForwardedPrefix, + UsePortInRedirects: anns.UsePortInRedirects, + Connection: anns.Connection, + Logs: anns.Logs, + LuaRestyWAF: anns.LuaRestyWAF, + InfluxDB: anns.InfluxDB, + DefaultBackend: anns.DefaultBackend, + BackendProtocol: anns.BackendProtocol, + CustomHTTPErrors: anns.CustomHTTPErrors, + ModSecurity: anns.ModSecurity, }, }, SSLPassthrough: anns.SSLPassthrough, diff --git a/test/e2e/defaultbackend/with_hosts.go b/test/e2e/defaultbackend/with_hosts.go new file mode 100644 index 0000000000..c9aeee5034 --- /dev/null +++ b/test/e2e/defaultbackend/with_hosts.go @@ -0,0 +1,82 @@ +/* +Copyright 2017 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 defaultbackend + +import ( + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + "github.com/parnurzeal/gorequest" + extensions "k8s.io/api/extensions/v1beta1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/ingress-nginx/test/e2e/framework" + "net/http" + "strings" +) + +var _ = framework.IngressNginxDescribe("Default backend with hosts", func() { + f := framework.NewDefaultFramework("default-backend-hosts") + host := "foo.com" + + BeforeEach(func() { + f.NewEchoDeploymentWithReplicas(1) + }) + + AfterEach(func() { + }) + + It("should apply the annotation to the default backend", func() { + annotations := map[string]string{ + "nginx.ingress.kubernetes.io/proxy-buffer-size": "8k", + } + + ing := &extensions.Ingress{ + ObjectMeta: metav1.ObjectMeta{ + Name: "default-backend-annotations", + Namespace: f.IngressController.Namespace, + Annotations: annotations, + }, + Spec: extensions.IngressSpec{ + Backend: &extensions.IngressBackend{ + ServiceName: "http-svc", + ServicePort: intstr.FromInt(8080), + }, + Rules: []extensions.IngressRule{ + { + Host: host, + }, + }, + }, + } + + f.EnsureIngress(ing) + + f.WaitForNginxServer(host, + func(server string) bool { + return strings.Contains(server, "proxy_buffer_size 8k;") + }) + + resp, _, errs := gorequest.New(). + Get(f.IngressController.HTTPURL). + Set("Host", "foo.com"). + End() + + Expect(errs).Should(BeEmpty()) + Expect(resp.StatusCode).Should(Equal(http.StatusOK)) + }) + +})