вход-nginx скрывает перенаправление домена и маршрутизацию на основе путей

#nginx #kubernetes #cname #webflow #ingress-nginx

Вопрос:

Я использую ingress-nginx на кубернетесе. Мне нужно перенаправить входящие подключения на / блог, размещенный в webflow, и выполнить маршрутизацию на основе путей.

Webflow предоставляет домен, подобный website123.webflow.com . Я хотел бы обслуживать блог без перенаправления. Я хотел бы замаскировать домен webflow и вместо этого использовать домен по умолчанию.

Вот с чем я пришел до сих пор:

 ---
apiVersion: v1
kind: Service
metadata:
  name: homepage
spec:
  externalName: website123.webflow.io
  type: ExternalName
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    external-dns.alpha.kubernetes.io/hostname: my.custom.domain.com
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/load-balance: ewma
    nginx.ingress.kubernetes.io/proxy-body-size: 4G
    nginx.ingress.kubernetes.io/upstream-vhost: website123.webflow.io
    service.beta.kubernetes.io/do-loadbalancer-hostname: my.custom.domain.com
  labels:
    source: github
  name: http
  namespace: panattt1
spec:
  rules:
  - host: my.custom.domain.com
    http:
      paths:
      - path: /api
        backend:
          serviceName: http
          servicePort: 80
      - path: /images
        backend:
          serviceName: http
          servicePort: 80
      - path: /app
        backend:
          serviceName: http
          servicePort: 80
      - path: /game
        backend:
          serviceName: http
          servicePort: 80
      - path: /mapmaker
        backend:
          serviceName: http
          servicePort: 80
      - path: /dashboard
        backend:
          serviceName: http
          servicePort: 80
      - path: /
        backend:
          serviceName: homepage
          servicePort: 80
  tls:
  - hosts:
    - my.custom.domain.com

 

Приведенное выше решение работает не так, как мне бы хотелось. URL-адрес в браузере меняется с my.custom.domain.com на website123.webflow.io , а это не то, что я хочу.

Я считаю, что заголовок хоста достигает путей, отличных / от тех, которые не являются идеальными. Еще не проверено.

Если удалить nginx.ingress.kubernetes.io/upstream-vhost , я получу сообщение об ошибке из CDN webflow, потому что в $host заголовке используется домен, который недоступен. Добавление пользовательского домена приводит к той же ошибке.

Есть какие-нибудь идеи, смогу ли я изящно справиться с этой ситуацией, используя ingress-nginx ?

Комментарии:

1. Я считаю, что это webflow, который выполняет перенаправление, когда обнаруживает, что URL-адрес отличается от того, что он есть изначально.

Ответ №1:

Это работает для меня без аннотаций, таких как upstream-vhost и т. Д.

 kind: Service
metadata:
  name: blog-service
  namespace: panattt1
spec:
  externalName: website123.webflow.io
  ports:
  - port: 8001
    protocol: TCP
    targetPort: 443
  type: ExternalName

---

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/force-ssl-redirect: "true"
    ingress.kubernetes.io/ssl-redirect: "true"
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
  name: blog-ingress
  namespace: panattt1
spec:
  rules:
  - host: my.custom.domain.com
    http:
      paths:
      - backend:
          serviceName: blog-service
          servicePort: 8001
        path: /
  tls:
  - hosts:
    - my.custom.domain.com