Kubernetes ingress nginx домен перенаправления, а также применяется ко всем субдоменам перенаправленного домена - PullRequest
3 голосов
/ 14 июля 2020

Я хочу перенаправить основной домен при входе Kubernetes Nginx, но хочу, чтобы субдомены применялись к перенаправленному основному домену.

Вот пример веб-сайта: my.website.com

Внутри этого веб-сайта есть много поддоменов: / ab c, / def, / abc / aa, / def / bb, et c.

Для моего Kubernetes ingress Nginx, я хочу перенаправить my.website.com на this.website.com , а также хочу, чтобы все субдомены перенаправлялись на this.website.com

Вот пример, который я хочу:

my.website.com/abc to this.website.com/abc

Вот перенаправленный входной yaml, который я пробовал:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/permanent-redirect: https://this.website.com
  name: redirect-subdomains-too
spec:
  rules:
  - host: my.website.com
    http:
      paths:
      - backend:
          serviceName: redirect-service
          servicePort: 7990
        path: /

Очевидно, когда я попробую my.website.com/abc ИЛИ my.website.com/abc/aa, это перенаправит на this.website.com, а не на this.website.com/abc ИЛИ this.website.com/abc/aa.

Как я могу создать сценарий для этого входа?

1 Ответ

0 голосов
/ 15 июля 2020

Постоянное перенаправление похоже на «жесткий код» для всего. Вероятно, вы захотите перезаписать и / или server-snippet. Затем у вас может быть несколько правил хоста для каждого из хостов:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/server-snippet: |
        if ($host ~ "my.website.com|my2.website.com")
        {
            rewrite ^ https://this.website.com$request_uri permanent;
        }
  name: redirect-subdomains-too
spec:
  rules:
  - host: my.website.com
    http:
      paths:
      - backend:
          serviceName: redirect-service
          servicePort: 7990
        path: (/|$)(.*)
  - host: my.website.com
    http:
      paths:
      - backend:
          serviceName: redirect-service
          servicePort: 7990
        path: (/|$)(.*)
  - host: this.website.com
    http:
      paths:
      - backend:
          serviceName: redirect-service
          servicePort: 7990
        path: (/|$)(.*)

Вы всегда можете проверить конфигурацию, запустив:

kubectl exec -t <nginx-ingress-pod> cat nginx.conf
...