尝试在 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