Minio+Nginx+Https访问

缘起

最近感觉OSS比较有意思,然后发现网上有一款开源的软件Minio,算是OSS技术的的开源实现吧,最近玩了一下。想搞一下Https访问,但是Minio官方文档里面实在没看太懂,就想曲线救国,用Nginx转发一下,本次记录做法和期间遇到的问题。

版本

1Nginx 1.16.1 2Minio RELEASE.2021-01-08T21:18:21Z 3Java 1.8u255 4Https 腾讯云申请的ssl证书 5Minio Java客户端版本: 6 <dependency> 7 <groupId>io.minio</groupId> 8 <artifactId>minio</artifactId> 9 <version>8.0.3</version> 10 </dependency>

Nginx配置

上传腾讯云申请的ssl证书文件到服务器,Nginx的话上传解压后的nginx文件夹下的1_xxx.key2_xxx.crt文件

1server{ 2 listen 443 ssl; 3 server_name xxx.com; 4 ssl_certificate /home/certs/1_xxx.com.crt; 5 ssl_certificate_key /home/certs/2_xxx.com.key; 6 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 7 # 下面这个顺序不要颠倒 8 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 9 ssl_prefer_server_ciphers on; 10 location / { 11 proxy_pass http://localhost:9000; 12 # 下面这三个记得加上 13 proxy_set_header Host $host; 14 proxy_set_header X-Real-IP $remote_addr; 15 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 16 } 17 }

上面配置了Nginx转发,重启Nginx后,https就生效了

Minio配置

下载minio二进制文件,在minio所在的文件夹执行:

./minio server /data

minio默认9000端口,记得不要占用这个端口 其它设置详细见minio文档

java客户端

封装Minio上传文件方法:

1 @SneakyThrows //lombok的注解 2 public String uploadFile(InputStream inputStream, String bucket, String uploadFileName, String contentType,long size){ 3 MinioClient minioClient = MinioClient.builder() 4 //endpoint是Minio的地址,443是ssl的端口,取决于上面Nginx配置的端口 5 //true是开启ssl连接 6 .endpoint(endPoint,443,true) 7 .credentials(accessKey,accessSecret) 8 .build(); 9 10 minioClient.putObject(PutObjectArgs.builder().bucket(bucket) 11 .object(uploadFileName).stream(inputStream,size,-1).contentType(contentType).build()); 12 13 return minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder() 14 .bucket(bucket).object(uploadFileName).method(Method.GET).build()); 15 }

遇到错误:

1request signature we calculated does not match the signature you provided. Check your key and signing method.

是https签名问题,解决此问题的方法是:

  1. Nginx配置中添加(上面已经给出提示):
1 proxy_set_header Host $host; 2 proxy_set_header X-Real-IP $remote_addr; 3 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  1. Java客户端添加ssl支持
1MinioClient minioClient = MinioClient.builder() 2 //endpoint是Minio的地址,443是ssl的端口,取决于上面Nginx配置的端口 3 //true是开启ssl连接 4 .endpoint(endPoint,443,true) 5 .credentials(accessKey,accessSecret) 6 .build();

至此,Minio借助Nginx实现Https访问

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

​一篇文章总结一下Python库中关于时间的常见操作

前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在

Python Challenge Level 18

初学Python,挑战一下流行的PythonChallenge,很不幸,卡在了18关~~被字符字节码之间的转换搞得焦头烂额,不过终于搞定了还是很happy的~~~主要的问题就是16进制形式的字符如何转成字节码(注意:不是encoding)如:\'89','50','4e','47','0d','0a','1a','0a','00

VBox 启动虚拟机失败

在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern

FLV文件格式

1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.