【问题标题】:Default path on multiple nginx ingress rewrite多个 nginx 入口重写的默认路径
【发布时间】:2018-08-06 07:49:16
【问题描述】:

这是我的情况,我在 kubernetes (ingress) 上,有两个 docker 镜像:一个专用于 web,第二个用于 api。

在下一个配置下(在消息末尾):/web 将显示将调用/api 的前端,那里一切正常

/ 是 404,因为没有定义任何内容,我无法在入口配置中找到一种方法来告诉 / 应该重定向到 /web

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dev-ingress
  annotations:
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - demo.com
    secretName: tls-secret
  rules:
  - host: demo.com
    http: 
      paths:
      - path: /api
        backend:
          serviceName: api-app
          servicePort: 8080
      - path: /web
        backend:
          serviceName: web-app
          servicePort: 80

【问题讨论】:

  • 您可以使用 rewrite-target 但您需要将入口分成两部分。如果您创建两个名称不同但主机和路径不同的入口,我相信这应该可行。这听起来可能效率较低,但它只是指定路由规则的另一种方式。
  • 或者如果它也适用于您的 /api,则只需删除 rewrite-target 。我认为你只需要区分一个需要重写目标而另一个不需要。
  • 如果 cmets 没有帮助,请随时告诉我。
  • @RyanDawson 我将它传递给团队,一旦他们尝试,我会通知你。非常感谢您的帮助
  • @ChristianSaiki 现已发布作为答案 - 希望这会有所帮助

标签: kubernetes kubernetes-ingress


【解决方案1】:

这取决于您的前端和后端应用对路径的期望。通常前端将need to be able to find the backend on a certain external path,在您的情况下,听起来您的后端需要在与集群内工作的路径(/)不同的外部路径(/api)上可用。您可以重写 api 请求的目标,以便当请求被路由到后端时,/api 将转到 /

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dev-ingress-backend
  annotations:
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - demo.com
    secretName: tls-secret
  rules:
  - host: demo.com
    http: 
      paths:
      - path: /api
        backend:
          serviceName: api-app
          servicePort: 8080

您还可以为不重写目标的前端定义一个单独的入口(具有不同的名称),以便对/web 的请求将转到/web

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dev-ingress-frontend
  annotations:
    kubernetes.io/tls-acme: "true"
spec:
  tls:
  - hosts:
    - demo.com
    secretName: tls-secret
  rules:
  - host: demo.com
    http: 
      paths:
      - path: /web
        backend:
          serviceName: web-app
          servicePort: 80

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2019-04-04
    • 2019-01-16
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    相关资源
    最近更新 更多