MinIO Server配置NGINX代理官网文档翻译

本文指导如何在Linux环境下配置NGINX以代理MinIO服务器请求,包括两种模型:专用DNS和负载均衡。涉及配置细节、环境变量设置以及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

英文文档原文:

Configure NGINX Proxy for MinIO Server — MinIO Object Storage for Linux

原文开始:

The following documentation provides a baseline for configuring NGINX to proxy requests to MinIO in a Linux environment. It is not intended as a comprehensive approach to NGINX, proxying, or reverse proxying in general. Modify the configuration as necessary for your infrastructure.

This documentation assumes the following:

  • An existing NGINX deployment

  • An existing MinIO deployment

  • A DNS hostname which uniquely identifies the MinIO deployment

There are two models for proxying requests to the MinIO Server API and the MinIO Console:

以下文档提供了在Linux环境中将NGINX配置为代理MinIO请求的基线。它不是NGINX、代理或反向代理的综合方法。根据需要修改基础结构的配置

本文档假定以下内容:

现有NGINX部署

现有的MinIO部署

唯一标识MinIO部署的DNS主机名

向MinIO服务器API和MinIO控制台代理请求有两种模型:

 第一种模型:Dedicated DNS (专用DNS)


Create or configure a dedicated DNS name for the MinIO service.

For the MinIO Server S3 API, proxy requests to the root of that domain. For the MinIO Console Web GUI, proxy requests to the /minio subpath.

For example, given the hostname minio.example.net:

  • Proxy requests to the root https://minio.example.net to the MinIO Server listening on https://minio.local:9000.

  • Proxy requests to the subpath https://minio.example.net/minio/ui to the MinIO Console listening on https://minio.local:9090.

The following location blocks provide a template for further customization in your unique environment:

为MinIO服务创建或配置专用DNS名称。

对于MinIO服务器S3 API,代理请求到该域的根。对于MinIO控制台Web GUI,代理请求到/MinIO子路径。

例如,给定主机名minio.example.net:

对根的代理请求https://minio.example.net到正在侦听的MinIO服务器https://minio.local:9000.

对子路径的代理请求https://minio.example.net/minio/ui到正在侦听的MinIO控制台https://minio.local:9090.

以下位置块为在您的独特环境中进行进一步自定义提供了模板:

upstream minio_s3 {
   least_conn;
   server minio-01.internal-domain.com:9000;
   server minio-02.internal-domain.com:9000;
   server minio-03.internal-domain.com:9000;
   server minio-04.internal-domain.com:9000;
}

upstream minio_console {
   least_conn;
   server minio-01.internal-domain.com:9090;
   server minio-02.internal-domain.com:9090;
   server minio-03.internal-domain.com:9090;
   server minio-04.internal-domain.com:9090;
}

server {
   listen       80;
   listen  [::]:80;
   server_name  minio.example.net;

   # Allow special characters in headers
   ignore_invalid_headers off;
   # Allow any size file to be uploaded.
   # Set to a value such as 1000m; to restrict file size to a specific value
   client_max_body_size 0;
   # Disable buffering
   proxy_buffering off;
   proxy_request_buffering off;

   location / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;

      proxy_connect_timeout 300;
      # Default is HTTP/1, keepalive is only enabled in HTTP/1.1
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      chunked_transfer_encoding off;

      proxy_pass https://minio_s3; # This uses the upstream directive definition to load balance
   }

   location /minio/ui/ {
      rewrite ^/minio/ui/(.*) /$1 break;
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-NginX-Proxy true;

      # This is necessary to pass the correct IP to be hashed
      real_ip_header X-Real-IP;

      proxy_connect_timeout 300;

      # To support websockets in MinIO versions released after January 2023
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      # Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
      # Uncomment the following line to set the Origin request to an empty string
      # proxy_set_header Origin '';

      chunked_transfer_encoding off;

      proxy_pass https://minio_console; # This uses the upstream directive definition to load balance
   }
}

The S3 API signature calculation algorithm does not support proxy schemes where you host the MinIO Server API such as example.net/s3/.

You must also set the following environment variables for the MinIO deployment:

S3 API签名计算算法不支持托管MinIO Server API的代理方案,例如.net/S3/。

您还必须为MinIO部署设置以下环境变量:

MINIO_SERVER_URL设置为MINIO服务器的代理主机FQDN(完整域名),

例如:(https://minio.example.net)

MINIO_BROWSER_REDIRECT_URL设置为MINIO控制台的代理主机FQDN(完整域名)li(https://example.net/minio/ui)

### MinIO 使用 Nginx 代理时常见错误解决方案 当使用 NginxMinIO 进行反向代理时,可能会遇到诸如 HTTPS 和 HTTP 配置问题以及 `403 Forbidden` 错误等问题。以下是针对这些问题的具体分析和解决方法。 #### 1. **HTTPS 和 HTTP 的配置** 如果需要通过 Nginx 实现对 MinIO 的 HTTPS 支持,则需要注意以下几点: - 在 Nginx 中设置正确的主机头信息是非常重要的。例如,在某些情况下可能需要指定端口号来确保请求能够被正确转发到目标服务[^1]。 ```nginx proxy_set_header Host $host:$server_port; ``` 上述代码片段表明,为了使 MinIO 能够识别来自不同客户端的请求源地址并返回适当的内容,应该显式地传递完整的 `$host` 值连同其对应的服务器监听端口一起发送给后端 MinIO 服务实例。 #### 2. **关于 403 Forbidden 错误** 对于许多开发者来说,即使按照官方文档或其他教程完成了基本配置之后仍然会遭遇访问失败的情况——特别是收到状态码为 `403 (Forbidden)` 的响应消息。经过深入排查发现这通常是因为在定义 `location` 块内的 `proxy_pass` 参数后面意外附加了一个斜杠 (`/`) 所致[^2]。 下面展示了一种有效的修正方式: ```nginx location /minio/ { proxy_pass http://localhost:9000; # 不要在这里加 / proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } ``` 这里强调的是,`proxy_pass` 后面的目标 URL 应该精确匹配实际运行中的 MinIO 地址路径结构而无需额外补充结尾处多余的分隔符字符 `/` ,否则可能导致路径拼接异常从而引发权限验证方面的障碍。 此外还需要注意一些其他头部字段如 `X-Forwarded-*` 系列也需要合理配置以便让下游应用层能获取原始连接环境的相关上下文数据用于进一步处理逻辑判断依据之需。 --- ### 总结 通过对以上两个主要方面即 SSL/TLS 加密传输支持调整以及避免因不当书写引起的资源定位偏差所造成的拒绝访问现象进行了探讨说明,并给出了相应的实践指导建议供参考采用实施优化改进措施以达到预期效果目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值