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

Kubernetes Nginx Ingress访问Hazelcast Mancenter出现302重定向问题

问题根因

异常302重定向由两处配置错误共同导致:

  • Nginx Ingress的路径重写规则配置无效
  • Hazelcast管理中心未配置对应的子路径上下文,和Ingress转发规则不匹配

首先看Ingress配置的问题:你当前配置了nginx.ingress.kubernetes.io/rewrite-target: /$1,但匹配路径写的是/hazelcast-mancenter,没有配置正则捕获组,$1变量取不到任何值,实际转发到后端的路径完全不符合预期。比如访问/hazelcast-mancenter/时,转发到后端的路径不是预期的根路径/,后端服务识别不到请求路径就会触发重定向。
其次是Hazelcast管理中心本身的配置问题:5.x版本的Hazelcast MC默认仅在根路径提供服务,就算Ingress重写规则配置正确,MC返回的重定向地址、静态资源引用路径都是硬编码指向根路径/,不会自动携带/hazelcast-mancenter前缀,就算首页勉强打开,后续资源请求也会404或者循环跳转。

修复步骤

1. 修正Ingress转发规则

调整Ingress的路径匹配规则和重写注解,去掉无效的add-base-url注解(这个注解对后端返回的绝对路径重写兼容性极差,不要依赖),正确配置如下:

metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: james.new-dev.com
    http:
      paths:
      - backend:
          service:
            name: hazelcast-mancenter
            port:
              number: 8080
        path: /hazelcast-mancenter(/|$)(.*)
        pathType: ImplementationSpecific

配置逻辑说明:

  • 路径用正则/hazelcast-mancenter(/|$)(.*)做匹配,分两个捕获组:第一个组匹配前缀后的斜杠或路径结束标记,第二个组捕获前缀后的实际请求路径
  • 重写目标设为/$2,访问/hazelcast-mancenter时会转发到后端根路径/,访问/hazelcast-mancenter/xxx时会转发到后端对应路径/xxx

2. 给Hazelcast管理中心配置上下文路径

必须让MC自身感知到部署在/hazelcast-mancenter子路径下,否则它生成的跳转地址、资源路径还是会指向根路径。修改StatefulSet中容器的JAVA_OPTS环境变量,添加上下文路径参数:

containers:
- name: hazelcast-mancenter
  env:
  - name: JAVA_OPTS
    value: "-Dhazelcast.mc.healthCheck.enable=true -DserviceName=hazelcast -Dnamespace=default -Dhazelcast.mc.tls.enabled=false -Dhazelcast.mc.contextPath=/hazelcast-mancenter"

新增的-Dhazelcast.mc.contextPath=/hazelcast-mancenter参数会指定MC的对外访问前缀,所有内部重定向、静态资源引用都会自动携带该前缀,不会再跳转到根路径。

3. 生效验证

更新Ingress和StatefulSet配置后,等待MC Pod重启就绪,再访问https://james.new-dev.com/hazelcast-mancenter/即可正常加载页面,不会再出现异常302。

补充排查点

如果配置更新后仍有问题,可按以下顺序排查:

  • 查看Nginx Ingress Controller日志,确认新的Ingress规则已经成功加载
  • 集群内直接curl访问MC Pod的8080端口,请求/hazelcast-mancenter路径,确认后端服务本身可以正常响应,排除应用自身故障
  • 查看浏览器开发者工具中302响应的Location头:如果跳转到根路径/说明MC的contextPath参数未生效;如果路径携带前缀但返回404,说明Ingress的重写正则配置有误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 15:00:56