【发布时间】:2022-01-31 19:25:16
【问题描述】:
我正在努力解决以下问题。我有 2 个服务正在运行。我正在使用通配符来处理子域。请参阅下面的示例配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/ssl-redirect: "false"
kubernetes.io/ingress.class: nginx
kubernetes.io/ingress.global-static-ip-name: web-static-ip
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/server-alias: www.foo.bar
nginx.ingress.kubernetes.io/use-regex: "true"
name: foo-bar-ingress
namespace: test
spec:
rules:
- host: '*.foo.bar'
http:
paths:
- backend:
serviceName: legacy-service
servicePort: 80
path: /(.*)
pathType: ImplementationSpecific
- host: foo.bar
http:
paths:
- backend:
serviceName: new-service
servicePort: 8080
path: /(.*)
pathType: ImplementationSpecific
以 abc.foo.bar -> legacy-service 和 foo.bar -> new-service 的方式使用应用程序非常好。但是,当我使用 www 前缀访问应用程序时,它会进入通配符子域路径下,这意味着 www.foo.bar 进入 legacy-service,这是我想要避免的。 AFAIU 这个“www”被这个星号正则表达式捕获并且走错了路。我希望它转到新服务。
有什么方法可以通过 nginx 入口配置实现这一点?
【问题讨论】:
-
根据此页面,Ingress 的 extensions/v1beta1 API 版本不再提供:kubernetes.io/docs/reference/using-api/deprecation-guide/… 请您尝试更新到最新版本吗?
-
更新在这里没有帮助
标签: nginx kubernetes kubernetes-ingress nginx-ingress