【问题标题】:ingress-nginx hide domain redirect & path based routingingress-nginx 隐藏域重定向和基于路径的路由
【发布时间】:2021-09-17 07:15:45
【问题描述】:

我在 kubernetes 上使用 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,我会从 webflow 的 CDN 收到错误,因为 $host 标头使用的域不可用。添加自定义域会产生相同的错误。

如果我可以使用ingress-nginx 优雅地处理这种情况,有什么想法吗?

【问题讨论】:

  • 我相信是 webflow 在检测到 URL 与原来不同时会进行重定向。

标签: nginx kubernetes cname webflow ingress-nginx


【解决方案1】:

这对我有用,没有上游虚拟主机等注释。

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

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2018-12-12
    • 2021-10-26
    • 2021-09-15
    • 1970-01-01
    • 2017-05-21
    • 2018-05-24
    • 2021-12-27
    • 2021-05-15
    相关资源
    最近更新 更多