ingress-nginx kubernetes 中的通配符 url 重定向到基於路徑的 url 的入口似乎沒有傳遞正規表示式值

ingress-nginx kubernetes 中的通配符 url 重定向到基於路徑的 url 的入口似乎沒有傳遞正規表示式值

嘗試在 ingress-nginx kubernetes Ingress 中設定通配符 url 以重定向到基於路徑的 url,但它似乎沒有傳遞通配符正規表示式值。

url 類似於“https://test.dev.example1.com/admin”,它應該重定向到https://example2.com/folder/test

我得到的結果是重定向到https://example2.com/folder/

看來我沒有得到“test”的通配符值作為變量

下面是 Ingress 的片段

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
   name: sample-service-ingress
   annotations:
     kubernetes.io/ingress.class: nginx
     cert-manager.io/issuer: "letsencrypt-production"
     nginx.ingress.kubernetes.io/ssl-redirect: "true"
     nginx.ingress.kubernetes.io/server-snippet: |
        server_name ~^(?<name>[\w-]+)\.dev\.example1\.com$;

        location /admin {
          return 301 $scheme://example2.com/folder/$name;

        }
...

我還在 regex101.com 中測試了正規表示式,它看起來是正確的。 (減~)

我嘗試了一些方法,例如採用 $name var 並放入其他兩個硬編碼值的中間(例如 return 301 $scheme://example2.com/folder/begin.$name.end;),它返回「https ://example2.com/folder/begin..end”,它在begin..end 硬編碼值之間傳回一個空值或NULL 值。

我不確定正規表示式中的 $name var 是否正確傳遞。我看不到一個值。

我已經用這個參考以下內容作為參考https://stackoverflow.com/questions/39563071/how-to-get-subdomain-of-url-in-nginx

相關內容