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

K8s中Minio通过NGINX Ingress出现ERR_TOO_MANY_REDIRECTS问题求助

Minio通过NGINX Ingress出现ERR_TOO_MANY_REDIRECTS的解决思路

这个循环重定向的坑我之前也踩过,本质是Minio的Web UI和API在生成重定向URL的时候,没有感知到外部访问的路径前缀/minio,导致它会把请求重定向到根路径/,而NGINX Ingress又会把这个根路径请求再次转发到/minio,一来一回就形成了无限循环,直接触发ERR_TOO_MANY_REDIRECTS。

给你几个针对性的解决思路,按优先级排序:

1. 给Minio配置外部访问前缀(最推荐)

Minio本身支持通过环境变量或启动参数指定外部访问的URL前缀,这样它生成的所有重定向、页面链接都会自动带上/minio,从根源上解决问题。

修改你的Minio Deployment,添加以下环境变量:

spec:
  template:
    spec:
      containers:
      - name: minio
        image: minio/minio:latest
        env:
          # 指定Minio API的外部访问前缀
          - name: MINIO_SERVER_URL
            value: "http://你的域名/minio"
          # 指定Minio控制台的外部访问前缀(新版Minio控制台默认在9001端口)
          - name: MINIO_CONSOLE_URL
            value: "http://你的域名/minio/console"
        command:
          - minio
          - server
          - /data
          - --address
          - ":9000"
          - --console-address
          - ":9001"

如果是旧版Minio(控制台和API同端口),只需要设置MINIO_SERVER_URL即可。

2. 调整NGINX Ingress的代理重定向配置

如果暂时不想改Minio的部署,可以通过NGINX Ingress的注解来修正Minio返回的重定向URL,把Minio返回的/替换成/minio/:

更新你的Ingress配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    # 修正Minio返回的重定向URL
    nginx.ingress.kubernetes.io/proxy-redirect-from: /
    nginx.ingress.kubernetes.io/proxy-redirect-to: /minio/
spec:
  rules:
  - http:
      paths:
      - path: /app/?(.*)
        backend:
          serviceName: app-service
          servicePort: 3000
      - path: /minio/?(.*)
        backend:
          serviceName: minio-service
          servicePort: 9000

这个注解会让NGINX自动修改Minio返回的3xx重定向响应中的Location头,把根路径替换成/minio/,打断循环。

3. 拆分Minio API和控制台的Ingress路径

新版Minio的Web控制台默认运行在9001端口,和9000的API端口分离,你可以在Ingress里分别配置两个路径,避免路径冲突:

spec:
  rules:
  - http:
      paths:
      - path: /app/?(.*)
        backend:
          serviceName: app-service
          servicePort: 3000
      # 处理Minio API请求
      - path: /minio/?(.*)
        backend:
          serviceName: minio-service
          servicePort: 9000
      # 处理Minio控制台请求
      - path: /minio/console/?(.*)
        backend:
          serviceName: minio-service
          servicePort: 9001

配合前面的MINIO_CONSOLE_URL环境变量,就能让控制台的页面链接都指向正确的路径。

一般来说,第一种方法是最彻底的,从Minio自身配置出发解决问题,后面两种可以作为临时方案或者补充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:50:12