我在Kubernetes中使用minio,效果很好。但是,我似乎无法更改预签名URL的域和协议(protocol)。 Minio不断在我想要http://minio.test.svc:9000/delivery/
的地方给我https://example.com/delivery
。我试过在Pod中设置MINIO_DOMIN
,但似乎没有效果;我想我还是滥用这个变量。
最佳答案
这完全取决于您如何创建Minio客户端实例。如下指定主机和端口将使Minio将您的域解析为IP地址,并使用IP而非域。示例JavaScript代码:
import { Client as MinioClient } from 'minio';
const client = new MinioClient(
endPoint: 'yourdomain.com',
port: 9000,
accessKey: process.env.MINIO_ACCESS_KEY,
secretKey: process.env.MINIO_SECRET_KEY,
useSSL: false
);
如果您像上面那样创建minio实例,则您的域将被解析为其相应的IP地址,因此minio将使用http://x.x.x.x:9000
而不是https://yourdomain.com
还要注意,如果您的客户端配置如上,尝试使用useSSL: true
将引发SSL错误,如下所示write EPROTO 140331355002752:error:1408F10B:SSL routines:ssl3_get_record:wrong
version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:332
为了使minio可以将您的域用作https://yourdomain.com
,您需要拥有一个类似于nginx
的网络服务器,才能将请求代理到您的minio服务器。 Minio已记录了如何实现此here。按照here所述,将SSL添加到您的域中,然后如下所示创建您的minio客户端:import { Client as MinioClient } from 'minio';
const client = new MinioClient(
endPoint: 'yourdomain.com',
port: 443,
accessKey: process.env.MINIO_ACCESS_KEY,
secretKey: process.env.MINIO_SECRET_KEY,
useSSL: true
);
请注意port
和useSSL
参数的更改。Minio现在将在所有情况下都使用
https://yourdomain.com
。签名的网址也将是https
。