【发布时间】:2021-03-02 13:20:21
【问题描述】:
我正在尝试将 NGINX Ingress 控制器配置为我的 Kubernetes 集群的正确入口点。在集群内部,我创建了两个 REST Web 服务以及前端应用程序。我正在尝试实现以下场景。
- 当入口 IP 在没有任何参数的情况下被命中时,它应该被路由
到前端应用程序。示例:
192.168.1.20应该指向前端 在 80 端口提供服务。 - 当给定参数时,请求应该是
路由到正确的 REST 服务。例子:
192.168.1.20/first-rest/api/flower?id=1应该将请求路由到 first-rest 服务,以便它可以返回带有 id = 的花 1.
我可以正确访问前端应用程序,但是在尝试访问任何 REST 服务时,我收到 404 错误或根本没有响应。 First-rest、Second-rest 和 frontend 运行正常,并且在配置为 LoadBalancer 服务时可以访问。使用 Nginx,它们被配置为 ClusterIp 服务。
我的入口配置 ----------------------
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: main-routes
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /first-rest(/|$)(.*)
backend:
serviceName: first-rest
servicePort: 8090
- path: /second-rest(/|$)(.*)
backend:
serviceName: second-rest
servicePort: 9000
- path: /(.*)
backend:
serviceName: frontend
servicePort: 80
似乎 NGINX 正在缩短我的 REST API 所需的 URL 参数。
有没有办法传递正确的 URL 路径,以便 `192.168.1.20/first-rest/api/flower?id=1`会被路由到 `[first-rest add and port]/api/flower?id=1` 吗?
【问题讨论】:
标签: rest nginx kubernetes nginx-ingress