入口-nginx kubernetes 入口中的通配符 url 重定向到基于路径的 url 似乎没有传递正则表达式值

入口-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 并放在另外两个硬编码值的中间(例如,返回 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

相关内容