簡體   English   中英

Kubernetes nginx 通配符規則的入口配置

[英]Kubernetes nginx ingress configuration for wildcard rule

我正在努力解決以下問題。 我有 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”被這個星號正則表達式捕獲並且走錯了路。 我希望它 go 到新服務。

有什么方法可以通過 nginx 入口配置實現這一點?

還可以通過指定主機名來重定向來自www.foo.bar的請求。

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
  - host: 'www.foo.bar'
    http:
      paths:
      - backend:
          serviceName: new-service
          servicePort: 8080
        path: /(.*)
        pathType: ImplementationSpecific

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM