AKS中使用Nginx Ingress访问SpringBoot应用遇白标错误求助
问题原因及修复方案
出现Whitelabel Error Page的核心问题是Ingress的路径重写配置错误,导致请求转发到SpringBoot应用时的路径和Controller的映射不匹配。
具体错误点
你的Ingress配置里,路径重写规则没正确处理/app1/greet这类带子路径的请求:
- 使用了过时的重写注解
ingress.kubernetes.io/rewrite-target,当前NGINX Ingress Controller的标准注解是nginx.ingress.kubernetes.io/rewrite-target - Path规则
/app1配合rewrite-target: /时,会把/app1/greet转发成//greet(多了一个斜杠),或者直接保留/app1/greet,而你的SpringBoot Controller只映射了/greet,自然匹配不到。
修正后的Ingress配置
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app-ingress namespace: test-demo annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 spec: ingressClassName: nginx rules: - http: paths: - path: /app1(/|$)(.*) pathType: Prefix backend: service: name: app-1-svc port: number: 80
修改说明
- 注解更新:换成官方推荐的
nginx.ingress.kubernetes.io/rewrite-target注解,确保重写规则被NGINX正确识别 - Path规则调整:
/app1(/|$)(.*)用正则捕获组,把/app1之后的路径部分(比如/greet)捕获到$2变量中 - 重写目标:
/$2会把请求重写成捕获到的子路径,比如访问/app1/greet时,转发到后端的路径就是/greet,正好匹配你的Controller映射
额外验证步骤
在修复Ingress前,先确认应用本身和Service是正常的:
- 进入集群内的任意Pod,执行
curl app-1-svc.test-demo.svc.cluster.local/greet - 如果返回
Welcome to app-1,说明应用和Service没问题,问题确实出在Ingress配置
内容的提问来源于stack exchange,提问作者kverma28
相关产品推荐
相关产品推荐

