You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kibana 7.17.3设置server.basePath后经Nginx Ingress访问报404

解决Kibana通过Nginx Ingress访问404的问题

问题分析

你设置了server.basePath: "/kibana"和server.rewriteBasePath: true,但Nginx Ingress默认会去掉匹配的/kibana前缀后转发请求到Kibana后端,导致Kibana收到的请求路径缺少/kibana前缀,无法匹配对应路由,从而返回404。

解决方案

1. 调整Ingress配置,保留路径前缀转发

修改kibana-ingress-ssl.yaml,添加路径重写注解并调整path规则:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kibana-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/auth-type: basic
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - admin'
    # 添加路径重写注解,保留/kibana前缀转发给后端
    nginx.ingress.kubernetes.io/rewrite-target: /kibana/$2
spec:
  tls:
  - hosts:
    - example.com
  rules:
  - host: example.com
    http:
      paths:
      - backend:
          service:
            name: kibana-kibana
            port:
              number: 80
        path: /kibana(/|$)(.*)
        pathType: Prefix

该配置会让Nginx将example.com/kibana转发到kibana-kibana:80/kibana/,example.com/kibana/dashboard转发到kibana-kibana:80/kibana/dashboard,配合Kibana的rewriteBasePath: true,Kibana会自动去掉/kibana前缀处理内部路由。

2. 验证Kibana配置是否生效

进入Kibana Pod查看实际生效的配置:

kubectl exec -it <kibana-pod-name> -- cat /usr/share/kibana/config/kibana.yml

确认server.basePath: "/kibana"和server.rewriteBasePath: true已正确配置。

3. 确认Service端口映射正确

检查Kibana Service的端口是否正确映射到Pod的5601端口:

kubectl get svc kibana-kibana -o yaml

确保spec.ports中的targetPort为5601(Kibana默认监听端口),port与Ingress配置的80一致。

验证

应用修改后的Ingress配置:

kubectl apply -f kibana-ingress-ssl.yaml

等待Ingress规则生效后,访问https://example.com/kibana即可正常打开Kibana UI。

内容的提问来源于stack exchange,提问作者Chanikya_Sai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:40:33