nginx二级目录代理minio公有桶和私有桶配置最佳指南

背景:minio部署到A服务器,由于客户端不能直接访问A服务器,所以只能通过nginx代理的方式,客户端访问B服务器上的nginx,再由nginx代理到minio。
以下是针对Nginx二级目录代理MinIO公有桶和私有桶的最佳实践配置指南,结合生产环境中的常见需求和安全要求,提供可直接部署的方案.

公共桶配置

nginx提供了外网地址,通过二级目录可以代理内网minio的具体桶,将图片展示。minio的桶是公有或者自定义权限,匿名用户可以查看。
配置如下:

server {
    listen 8443 ssl;
    server_name yourdomain.com;
 
    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

	location /public-bucket {
          proxy_pass http://minio_ip:9000/hncs-zhujian/;
	      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;

	}
}

访问方式:
minio的图片地址是:http://minio_ip:9000/public-bucket/static/test.jpg
那么代理后的访问方式:
https://yourdomain.com:8443/public-bucket/static/test.jpg

私有桶配置

当minio的桶是私有桶时,这时候就需要使用带签名的文件URL进行访问下载,URL大致如下:

内网minio返回的临时图片地址

http://minio_ip:9000/private-bucket/static/test.jpg?
X-Amz-Algorithm=AWS4-HMAC-SHA256&
X-Amz-Credential=admin%20250524T005454%2Fus-east-1%2Fs3%2Faws4_request&
X-Amz-Date=20250524T005454Z&
X-Amz-Expires=12000&
X-Amz-SignedHeaders=host&
X-Amz-Signature=248c0eliuyusnshengsirbf44d485b5fff73abdde90b1a

可以看见一个参数:X-Amz-SignedHeaders=host,也就是说签名和host有关系。

http请求头里面有一个host参数,一般是目标地址IP或域名,但是通过nginx代理之后可能会发生变化,最终导致minio校验签名不通过。
常见报错:

在这里插入图片描述

配置

    location ^~ /private-bucket/ {
      proxy_pass http://minio_ip:9000/private-bucket/;
       # 传递客户端原始请求头(关键)
      proxy_set_header Host $proxy_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;
  
      # **完整传递所有 S3 签名相关头部**(注意参数名与 URL 中的一致性)
      proxy_set_header X-Amz-Algorithm $http_x_amz_algorithm;
      proxy_set_header X-Amz-Credential $http_x_amz_credential;
      proxy_set_header X-Amz-Date $http_x_amz_date;
      proxy_set_header X-Amz-Expires $http_x_amz_expires;
      proxy_set_header X-Amz-SignedHeaders $http_x_amz_signedheaders;
      proxy_set_header X-Amz-Signature $http_x_amz_signature;

      proxy_http_version 1.1;
      proxy_set_header Connection "keep-alive";  # 建议保持长连接
      proxy_buffering off;
      client_max_body_size 0;
  

    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuyunshengsir

微信:lys20191020

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值