嘗試在 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