无法使用kubernete nginx入口控制器创建路由规则

无法使用kubernete nginx入口控制器创建路由规则,nginx,kubernetes,kubernetes-ingress,Nginx,Kubernetes,Kubernetes Ingress,我正在尝试使用kubernetes nginx入口控制器:(quay.io/kubernetes入口控制器/nginx入口控制器:0.22.0)。下面是我的入口对象 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: cc-store-ingress annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/rewri

我正在尝试使用kubernetes nginx入口控制器:(quay.io/kubernetes入口控制器/nginx入口控制器:0.22.0)。下面是我的入口对象

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 name: cc-store-ingress
 annotations:
  kubernetes.io/ingress.class: "nginx"
  nginx.ingress.kubernetes.io/rewrite-target: /$1
  nginx.ingress.kubernetes.io/add-base-url: "true"
  #nginx.ingress.kubernetes.io/configuration-snippet: |
  # sub_filter "http://my-ip:30021/" "http://my-ip:30021/app/";
  # sub_filter_once off;
spec:
 #tls:
 #- secretName: tls-secret
 rules:
 - host: my-ip
  http:
   paths:
   - path: /app/?(.*)
    backend:
     serviceName: appsvc
     servicePort: 7201
当我尝试通过入口访问此服务时,我遇到了一个空白页面,我理解这是因为响应(由少量java脚本、css和其他脚本组成)返回到我的ip:30021/而不是我的ip:30021/应用程序。(检查nginx日志初始连接给出200响应随后加载css和js失败,404)

有没有办法克服这个问题?“sub_过滤器”和添加基本url注释都没有帮助


是否有任何方法可以实现响应的路径重写。使用任何其他入口控制器(而不是nginx)会使这一问题更容易解决吗?

这是我如何向完全不支持它的服务添加基本路径的示例。以及一个解决方案,用于处理重定向到没有基本路径的URL

annotations:
  kubernetes.io/ingress.class: nginx
  # catch $1 from 'path' capture group
  nginx.ingress.kubernetes.io/rewrite-target: /$1
  # handle redirects
  # nginx.ingress.kubernetes.io/proxy-redirect-from: http://<host>/
  # nginx.ingress.kubernetes.io/proxy-redirect-to: /<basePath>/
  nginx.ingress.kubernetes.io/configuration-snippet:
    proxy_set_header Accept-Encoding "";
    sub_filter_last_modified off;

    # add base path to all static resources
    sub_filter '<head>' '<head> <base href="/<basePath>/">';
    sub_filter 'href="/' 'href="';
    sub_filter 'src="/' 'src="';

    # set types of files to 'sub-filter'
    sub_filter_once off;
    sub_filter_types text/html text/css text/javascript application/javascript;
...
    - path: /<basePath>/?(.*)
注释:
kubernetes.io/ingres.class:nginx
#从“路径”捕获组捕获$1
nginx.ingres.kubernetes.io/rewrite-target://$1
#句柄重定向
#nginx.ingres.kubernetes.io/proxy-redirect-from:http:///
#nginx.ingres.kubernetes.io/proxy-redirect-to://
nginx.ingres.kubernetes.io/configuration-snippet:
代理集头接受编码“”;
子过滤器上次修改关闭;
#将基本路径添加到所有静态资源
子过滤器“”;
子过滤器'href=“/”href=“”;
子_过滤器“src=“/”src=“”;
#将文件类型设置为“子筛选器”
子过滤器关闭一次;
sub_filter_type text/html text/css text/javascript application/javascript;
...
-路径:/?(*)

尝试删除
重写目标
并将其更新以更改行为。此外,附加入口/入口控制器日志也可能有用。