Nginx入口控制器路径重写不';行不通

Nginx入口控制器路径重写不';行不通,nginx,kubernetes,kubernetes-ingress,nginx-ingress,Nginx,Kubernetes,Kubernetes Ingress,Nginx Ingress,我已经使用helm chart安装了nginx,并按如下方式配置了入口规则。虽然它只对根路径有效,如下所示 /user/login - working /user/register - working /foo/user/login - not working /foo/user/register - not working 192.168.65.3 - - [23/May/2020:12:40:30 +0000] "GET /user/login HTTP/1.1" 200 1685 "-"

我已经使用helm chart安装了nginx,并按如下方式配置了入口规则。虽然它只对根路径有效,如下所示

/user/login - working
/user/register - working
/foo/user/login - not working
/foo/user/register - not working
192.168.65.3 - - [23/May/2020:12:40:30 +0000] "GET /user/login HTTP/1.1" 200 1685 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" "-"
192.168.65.3 - - [23/May/2020:12:40:34 +0000] "GET /foo/user/login HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" "-"
我已经按照文档中提到的配置了重写目标,但无法使其正常工作。不知道我做错了什么

 apiVersion: networking.k8s.io/v1beta1
 kind: Ingress
 metadata:
   name: foosrv-ingress
   annotations:
     kubernetes.io/ingress.class: nginx
     nginx.ingress.kubernetes.io/rewrite-target: /$2
     nginx.ingress.kubernetes.io/use-regex: true
     nginx.ingress.kubernetes.io/ssl-redirect: false
     nginx.ingress.kubernetes.io/enable-rewrite-log: true
 spec:
   rules:
   - http:
       paths:
       - path: /foo(/|$)(.*)
         backend:
           serviceName: foosrv-service
           servicePort: 5500
       - path: /
         backend:
           serviceName: foosrv-service
           servicePort: 5500
显然,它甚至没有标识/foo(/|$)(*)路径规则。当对foo path和ingress的调用返回404时,我在pod中没有看到任何日志,如下所示

/user/login - working
/user/register - working
/foo/user/login - not working
/foo/user/register - not working
192.168.65.3 - - [23/May/2020:12:40:30 +0000] "GET /user/login HTTP/1.1" 200 1685 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" "-"
192.168.65.3 - - [23/May/2020:12:40:34 +0000] "GET /foo/user/login HTTP/1.1" 404 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" "-"
有OSS和Plus。您已经安装了Plus,但是您需要安装OSS,因为您在注释中使用了
nginx.ingres.kubernetes.io

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install my-release ingress-nginx/ingress-nginx
编辑:


nginx.ingres.kubernetes.io/use-regex:true
应该被删除,因为路径中没有regex,所以它是不必要的。

我已经将Ingres控制器更改为nginx OSS,但它无法解决问题,而且行为仍然是一样的。不,如果我删除路径,没有“/foo”,它甚至不能工作:/。有什么想法吗?尝试添加一个主机..从这里引用..它说必须使用完整的主机名。在这种情况下,主机是什么
-host:localhost
在此处工作?此处引用的内容可以是任何内容,但您需要在访问url的位置修改系统的/etc/hosts