ingress-nginx kubernetes Ingress でワイルドカード URL を設定して、パス ベースの URL にリダイレクトしようとしましたが、ワイルドカード正規表現値が渡されないようです。
URLは「https://test.dev.example1.com/admin」のようなもので、次のURLにリダイレクトされます。https://example2.com/folder/test
私が得た結果は、https://example2.com/フォルダ/
ワイルドカード値「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 変数を取得して、他の 2 つのハードコードされた値の中間に配置する (例: return 301 $scheme://example2.com/folder/begin.$name.end;) などのいくつかの方法を試しました。これにより、"https://example2.com/folder/begin..end" が返され、begin..end のハードコードされた値の間に空または NULL 値が返されます。
正規表現の $name 変数が正しく渡されているかどうかわかりません。値を確認できません。
私はこれを以下のものを参考に使用しましたhttps://stackoverflow.com/questions/39563071/how-to-get-subdomain-of-url-in-nginx