默认后端-404不带www(ingress)

时间:2019-10-28 12:53:04

标签: kubernetes google-kubernetes-engine nginx-ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 annotations:
  nginx.ingress.kubernetes.io/rewrite-target: /
  ingress.bluemix.net/rewrite-path: "serviceName=nginx rewrite=/"
 name: nginx-ingress 
 namespace: 'default'  
spec:
 rules:
 - host: www.domain.com
   http:
     paths:
     - path: /*
       backend:
         serviceName: nginx
         servicePort: 80

在这里,我有一些入口配置yaml文件。当我将其全部应用正确时,但仅当您通过路径www.domain.com时,当我尝试使用domain.com时,它却无法工作并返回我

  

默认后端-404

我该怎么办?在规则中再添加一个主机:

 - host: domain.com
   http:
     paths:
     - path: /*
       backend:
         serviceName: nginx
         servicePort: 80

像这样还是可以更好地解决这个问题?

3 个答案:

答案 0 :(得分:4)

annotations块添加入口别名注释:

nginx.ingress.kubernetes.io/server-alias:  domain.com

答案 1 :(得分:2)

您可以为domain.com设置另一个主机规则。但是,如果您想要不同的路径规则,则此方法更合适。要使用相同的规则,最好设置server-alias批注:

  

允许在服务器定义中定义一个或多个别名   使用注解的NGINX配置   nginx.ingress.kubernetes.io/server-alias: "<alias 1>,<alias 2>"。这个   将创建具有相同配置的服务器,但添加新的   server_name指令的值。

使用此:

nginx.ingress.kubernetes.io/server-alias: domain.com

请记住,您也可以配置from-to-www-redirect批注:

  

在某些情况下,需要从www.domain.com重定向到   domain.com,反之亦然。要启用此功能,请使用注释   nginx.ingress.kubernetes.io/from-to-www-redirect: "true"

答案 2 :(得分:0)

不确定我们的解决方案是否适合您。 我们也遇到了类似的问题(不确切),我们不想更改已部署的入口(即无法添加服务器别名) 因此,我们采取了一些措施来确保将在浏览器/请求中键入的所有主机地址都转换为在入口中配置的地址。

在此示例中,我们将在本地/ etc / hosts中创建条目

www.domain.com