簡體   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