用于重定向到 Azure K8 中的多个服务的 Nginx 入口路径



我现在使用的是azure k8。我有两个服务,我需要通过同一个域公开,并希望为不同的服务添加路径。

入口文件如下


apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: kibana-ingress
namespace : {{ .Values.namespace }}
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/affinity: "cookie"
nginx.ingress.kubernetes.io/session-cookie-name: "route"
nginx.ingress.kubernetes.io/session-cookie-hash: "sha1"
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
tls:
- hosts:
- {{ .Values.kibana.ingressdomain }}
secretName: abb-aks-cert
rules:
- host: {{ .Values.kibana.ingressdomain }}
http:
paths:
- path: /app/kibana
backend:
serviceName: kibana-service
servicePort: 5601
- path: /grafana
backend:
serviceName: monitor-grafana
servicePort: 80

当我这样定义时,我会得到404个错误。有什么解决办法吗?

Kubernetes版本是1.16

这是人们经常犯的错误。Web应用程序通常(默认情况下(使用基本路径=/进行服务。在第一次请求期间,网站正确地重新响应,但路径不正确,因为它没有意识到它在代理后面运行,并且某个东西正在重写路径。

您需要相应地为这两个应用程序设置根/基路径,并删除重写,因为不需要重写。


对于kibana,您需要设置:

服务器.base路径:

使您能够指定在代理后面运行时装载Kibana的路径。使用server.rewriteBasePath设置来告诉Kibana是否应该从收到的请求中删除basePath,并防止在启动时出现弃用警告。此设置不能以斜线(/(结尾。

更多kibana文档


对于grafana,您需要设置:

root_url

这是用于从网络浏览器访问Grafana的完整URL。如果您使用Google或GitHub OAuth身份验证(为了使回调URL正确(,这一点非常重要。

注意:如果Grafana前面有一个反向代理,通过子路径公开它,则此设置也很重要。在这种情况下,将子路径添加到此URL设置的末尾。

serve_from_sub_path

从root_url设置中指定的子路径为Grafana提供服务。出于兼容性原因,默认情况下它设置为false。

通过启用此设置并使用上面root_url中的子路径,例如root_url=http://localhost:3000/grafana,Grafana可访问http://localhost:3000/grafana

grafana文档中的更多信息

最新更新