ERR_TOO_MANY_REDIRECTS 通过 NGINX 入口控制器用于 Minio

ERR_TOO_MANY_REDIRECTS for Minio via NGINX Ingress Controller

我有一个Minio ClusterIP service running in a Kubernetes cluster. And on top of it, I have a 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: /
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 网络控制台的屏幕截图。

有什么想法吗?

由于 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: /
spec:
  rules:
    - http:
        paths:
          - path: /app/?(.*)
            backend:
              serviceName: app-service
              servicePort: 3000
          - path: /(minio/.*)
            backend:
              serviceName: minio-service
              servicePort: 9000

而且我已经在浏览器中运行了 Minio 服务:

希望对您有所帮助。