首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Kubernetes入口路径找不到资源

Kubernetes入口路径找不到资源
EN

Stack Overflow用户
提问于 2018-12-05 13:08:08
回答 1查看 4.1K关注 0票数 1

在使用路径指向不同的Kubernetes服务时,我遇到了一些问题。

我正在使用路径/secondary-app指向一个辅助服务,并且我可以通过我的日志看到我正在正确地访问该服务。

我的问题是,站点上的任何包含的资源,例如/css/main.css,最终都找不到,结果是404。

这是我的入口的精简版本:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/proxy-body-size: 50m
    nginx.ingress.kubernetes.io/rewrite-target: /
  name: my-app
spec:
  rules:
  - host: my-app.example.com
    http:
      paths:
      - backend:
        path: /
          serviceName: my-app
          servicePort: http
      - backend:
        path: /secondary-app        
          serviceName: secondary-app
          servicePort: http

我已经尝试了一些东西,但还不能让它工作。我可能需要做一些apache重写吗?

任何帮助都将不胜感激。

编辑-解决方案

多亏了@mk_sta的一些帮助,我能够通过使用nginx.ingress.kubernetes.io/configuration-snippet注释来运行我的辅助服务应用程序,如下所示:

代码语言:javascript
复制
  nginx.ingress.kubernetes.io/configuration-snippet: |
      if ($request_uri = '/?%secondary-app') { rewrite /(.*) secondary-app/$1 break; }

它仍然需要对我的特定应用程序进行一些调整,但这正是我所需要的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-05 19:45:09

我猜Ingress配置中的nginx.ingress.kubernetes.io/rewrite-target: /注释不会为多路径重写目标路径带来任何成功,请阅读更多here。但是,您可以考虑使用nginx.org/rewrites:注释附带的Nginx Plus Ingress controller,它可用于将URI路径指向本example中描述的多个服务。

你也可以考虑对现有的Ingress使用nginx.ingress.kubernetes.io/configuration-snippet annotation,它可以将重写规则调整到Nginx位置,类似于:

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/proxy-body-size: 50m
    nginx.ingress.kubernetes.io/configuration-snippet: |
      rewrite /first-app/(.*) $1 break;
      rewrite /secondary-app/(.*) /$1 break;
  name: my-app
spec:
  rules:
  - host: my-app.example.com
    http:
      paths:
      - backend:
        path: /first-app
          serviceName: my-app
          servicePort: http
      - backend:
        path: /secondary-app        
          serviceName: secondary-app
          servicePort: http
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53625500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档