如何为预签名 URL 设置 minio 域?

Jas*_*ach 5 kubernetes minio

我在 Kubernetes 中使用 minio,效果很好。但是,我似乎无法更改预签名 URL 的域和协议。Minio 总是给我http://minio.test.svc:9000/delivery/想要的地方https://example.com/delivery。我尝试MINIO_DOMIN在pod中设置,但似乎没有效果;无论如何,我认为我滥用了这个变量。

Dan*_*tie 1

这完全取决于您如何创建 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
);
Run Code Online (Sandbox Code Playgroud)

如果您像上面一样创建您的 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
Run Code Online (Sandbox Code Playgroud)

为了使 minio 使用您的域名https://yourdomain.com,您需要有一个 Web 服务器,例如nginx将您的请求代理到您的 minio 服务器。Minio 已在此处记录了如何实现此目的。按照此处所述将 SSL 添加到您的域,然后继续创建您的 minio 客户端,如下所示:

write EPROTO 140331355002752:error:1408F10B:SSL routines:ssl3_get_record:wrong 
version number:../deps/openssl/openssl/ssl/record/ssl3_record.c:332
Run Code Online (Sandbox Code Playgroud)

port注意和参数的变化useSSL

https://yourdomain.comMinio 现在将在所有情况下使用。签名的网址也将是https.