我在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
);
请注意portuseSSL参数的更改。
Minio现在将在所有情况下都使用https://yourdomain.com。签名的网址也将是https

10-08 12:46