Beim Versuch, eine Platzhalter-URL in Ingress-Nginx Kubernetes Ingress einzurichten, um auf eine pfadbasierte URL umzuleiten, scheint der Platzhalter-Regex-Wert nicht zu übergeben.
Die URL wäre dann etwa "https://test.dev.example1.com/admin" und sollte weiterleiten zuhttps://example2.com/ordner/test
Das Ergebnis, das ich erhalte, ist die Weiterleitung zuhttps://example2.com/ordner/
Es scheint, dass ich den Platzhalterwert von "test" nicht als Variable bekomme
Nachfolgend finden Sie einen Ausschnitt des 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;
}
...
Ich habe den regulären Ausdruck auch in regex101.com getestet und er scheint korrekt zu sein. (abzüglich des ~)
Ich habe ein paar Dinge ausprobiert, wie zum Beispiel die Variable $name zu nehmen und sie zwischen zwei andere fest codierte Werte einzufügen (z. B. return 301 $scheme://example2.com/folder/begin.$name.end;), was „https://example2.com/folder/begin..end“ zurückgibt, was wiederum einen leeren oder NULL-Wert zwischen den fest codierten begin..end-Werten zurückgibt.
Ich bin nicht sicher, ob die Variable $name im regulären Ausdruck korrekt übergeben wird. Ich kann keinen Wert sehen.
Ich habe dies im Folgenden als Referenz verwendethttps://stackoverflow.com/questions/39563071/wie-erhalte-man-die-Subdomain-einer-URL-in-nginx