![入口-nginx kubernetes 入口中的通配符 url 重定向到基于路径的 url 似乎没有传递正则表达式值](https://linux22.com/image/776737/%E5%85%A5%E5%8F%A3-nginx%20kubernetes%20%E5%85%A5%E5%8F%A3%E4%B8%AD%E7%9A%84%E9%80%9A%E9%85%8D%E7%AC%A6%20url%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E5%9F%BA%E4%BA%8E%E8%B7%AF%E5%BE%84%E7%9A%84%20url%20%E4%BC%BC%E4%B9%8E%E6%B2%A1%E6%9C%89%E4%BC%A0%E9%80%92%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%80%BC.png)
尝试在 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