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

时间:2019-07-31 19:51:16

标签: kubernetes minio

我在Kubernets中使用minio,效果很好。但是,我似乎无法更改预签名URL的域和协议。 Minio不断给我http://minio.test.svc:9000/delivery/,直到我想要的地方https://example.com/delivery。我曾尝试在豆荚中设置MINIO_DOMIN,但似乎没有效果;我想我还是在滥用这个变量。

2 个答案:

答案 0 :(得分:1)

我花了几天时间解决这个问题,并设法在Kubernetes集群中使用NGINX解决了这个问题。

NGINX controller Kubernetes: need to change Host header within ingress

您可以使用入口注释将所有传入流量的Host标头更改为您的Minio入口,以便它始终是相同的主机名。

答案 1 :(得分:0)

这完全取决于您如何创建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之类的Web服务器,以便将请求代理到您的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