当前位置:   article > 正文

ngnix转发S3预签名地址_nginx s3 presigned url "+

nginx s3 presigned url "+

情景: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和端口

  1. URL preSignedUrl = amazonS3.generatePresignedUrl(request);
  2. String url = preSignedUrl.toString();
  3. String newIP = proxyIp;
  4. String newPort = proxyPort;
  5. 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端口;

  1. server {
  2. listen 8089;
  3. server_name localhost;
  4. server_name_in_redirect off;
  5. client_max_body_size 200m;
  6. location /bigfile {
  7. proxy_pass http://127.0.0.1:8089/bigfile;
  8. proxy_set_header Host 127.0.0.1:8089;
  9. proxy_set_header X-Real-IP $remote_addr;
  10. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  11. proxy_set_header X-Forwarded-Proto $scheme;
  12. #升级http1.1到 websocket协议
  13. proxy_http_version 1.1;
  14. proxy_set_header Upgrade $http_upgrade;
  15. proxy_set_header Connection $connection_upgrade;
  16. }
  17. }

参考:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/707169
推荐阅读
相关标签
  

闽ICP备14008679号