ngnix转发S3预签名地址

情景:nginx在服务器1已,minio在服务器2, 业务系统在服务器3 服务器互通 , 生产环境中要尽可能的少让用户去申请ip和端口权限,所以对于使用S3预签名上传的功能要使用ngnix代理转发,这样用户就不需要去申请OSS的ip端口权限了。

流程:业务系统进行上传操作,后端返回给前端一个s3的预签名地址(默认预签名的ip和端口为minio的ip和minio的API端口,后端替换为ngnix所在服务器1的ip和ngnix监听的端口),前端去请求后端返回的预期签名地址并。

S3生成的预签名:

S3生成的预签名通常是OSS的ip和API端口,要使用ngnix转发S3生产的预签名地址,需要后端将s3生成的预签名需要修改ip和端口再传给前端,前端去请求这个ngnix代理的ip和端口

        URL preSignedUrl = amazonS3.generatePresignedUrl(request);
        String url = preSignedUrl.toString();
        String newIP = proxyIp;
        String newPort = proxyPort;
        String modifiedUrl = url.replace(preSignedUrl.getHost() + ":" +     preSignedUrl.getPort(), newIP + ":" + newPort);
 

nginx配置:

其中:

        location /bigfile {
                  proxy_pass http://127.0.0.1:8089/bigfile; 
                  proxy_set_header Host 127.0.0.1:8089;

}

location /bigfile中的bigfile是存储桶名

proxy_pass http://minio所在的服务器ip:minio的API端口/存储桶名; 

proxy_set_header Host minio所在的服务器ip:minio的API端口;

	server {
        listen       8089;
        server_name  localhost;
        server_name_in_redirect off;
        client_max_body_size 200m;   
		
        location /bigfile {
      			proxy_pass http://127.0.0.1:8089/bigfile; 
      			proxy_set_header Host 127.0.0.1:8089;
      			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;
			#升级http1.1到 websocket协议
			proxy_http_version 1.1;
			proxy_set_header Upgrade $http_upgrade;
			proxy_set_header Connection  $connection_upgrade;

        }

    }

参考:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值