首页 > 解决方案 > 通过 NGINX 入口控制器的 Minio 的 ERR_TOO_MANY_REDIRECTS

问题描述

我有一个在 Kubernetes 集群中运行的Minio ClusterIP 服务。最重要的是,我有一个NGINX Ingress Controller。NGINX Ingress 需要将 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
spec:
  rules:
    - http:
        paths:
          - path: /app/?(.*)
            backend:
              serviceName: app-service
              servicePort: 3000
          - path: /minio/?(.*)
            backend:
              serviceName: minio-service
              servicePort: 9000

部署后,该应用程序运行良好。但是,Minio 页面有问题,抱怨:

This page isn’t working
example.mysite.com redirected you too many times.
Try clearing your cookies.
ERR_TOO_MANY_REDIRECTS

事实上,请求一直在重定向。这是来自 Chrome DevTools 的网络控制台的屏幕截图。

有任何想法吗?

标签: kubernetesnginx-ingressminio

解决方案


由于 Minio 总是重定向到 /minio/,因此您需要保留/minio路径并将其传递给 Minio 服务。

当我将其路径规则更改为 时- path: /(minio/.*),它可以工作。现在 Ingress 配置如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - http:
        paths:
          - path: /app/?(.*)
            backend:
              serviceName: app-service
              servicePort: 3000
          - path: /(minio/.*)
            backend:
              serviceName: minio-service
              servicePort: 9000

我让 Minio 服务在浏览器中运行:

希望它是有帮助的。


推荐阅读