繁体   English   中英

REST URI 与 NGINX 入口 Controller

[英]REST URI with NGINX Ingress Controller

我正在尝试将 NGINX Ingress controller 配置为我的 Kubernetes 集群的正确入口点。 在集群内部,我创建了两个 REST Web 服务以及前端应用程序。 我正在尝试实现以下场景。

  • 当入口 IP 在没有任何参数的情况下被命中时,它应该被路由到前端应用程序。 示例: 192.168.1.20应该在端口 80 上连接前端服务。
  • 给定参数后,应将请求路由到正确的 REST 服务。 示例: 192.168.1.20/first-rest/api/flower?id=1 ?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 ZDB97442387143CACE1403 所需的 URL 参数
有什么方法可以通过正确的 URL 路径,以便将 192.168.1.20/first-rest/api/flower?id=1 路由到 `[first-rest add and port]/api/flower?id=1 `?

否则,您需要指定入口路径类型,具体取决于入口 class 特定实现,它将默认为精确或前缀(我假设在您的情况下它默认为精确)

所以,你需要做类似的事情

spec:
  rules:
  - http:
      paths:
      - path: /first-rest
        pathType: Prefix
        backend:
          serviceName: first-rest
          servicePort: 8090

此处查看有关入口路径的文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM