簡體   English   中英

Kubernetes Nginx 入口 - 重寫動態 URL

[英]Kubernetes Nginx Ingress - Rewrite Dynamic URL

在這里,我有 kubernetes 在 minikube 上運行,它有 2 個服務backendfrontend 我已經為 minikube 安裝了入口插件。

每當前端請求路徑 url 是/users/{user-id}時,我都想重寫它動態地使用相同的 url 進入backend服務。

假設請求是/users它將backend服務重寫為/users/users/1它轉到/users/1

我試圖閱讀nginx 手冊發現一些我不明白的特殊表達。

這是我的入口配置。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-be
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /users/$1
spec:
  ingressClassName: nginx
  rules:
    - host: backend
      http:
        paths:
          - path: /users/(.*)
            pathType: Prefix
            backend:
              service:
                name: backend
                port:
                  number: 5000

當請求是/users/{users-id}時,我的配置似乎很好,但是當請求是/users時,我的入口不會將我重定向到backend服務中的“/users”。

當我用 curl 測試時,這是 output。

curl http://backend/users/3

{"id":3,"name":"Sofia","email":"sofia@gmail.com","gender":"Female","createdAt":"2022-04-05T15:46:46.000Z","updatedAt":"2022-04-05T15:46:46.000Z"}%
curl http://backend/users

<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

我在這里想念什么?

預先感謝您的幫助!

更新!

評論中的 Andreas 建議我使用/users/並且它有效!

然后我決定修改我的入口配置。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-be
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /users/$2
spec:
  ingressClassName: nginx
  rules:
    - host: backend
      http:
        paths:
          - path: /users(/|$)(.*)
            pathType: Prefix
            backend:
              service:
                name: backend
                port:
                  number: 5000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM