如何让 Strapi 识别指向 S3 存储桶的自定义域?

How to make Strapi recognize custom domain pointing to an S3 bucket?

我正在使用 S3 存储桶通过 strapi-provider-upload-aws-s3 插件存储静态资产。此外,我有一个自定义域通过 SSL 指向该存储桶。基本上,https://my.domain.com/photo.jpg points to https://s3.amazonaws.com/my.domain.com/photo.jpg。有没有办法让插件知道这一点,所以它会自动将 URLs 从 s3.amazonaws.com/my.domain.com 更改为只是 my.domain.com 在更新包含 URL?

的字段之前

如果通过简单的配置或仪表板无法做到这一点,是否有任何方法可以调整代码本身以合并此功能?如果是这样(我强烈希望有),如果要走这条路,哪个文件包含这个逻辑?

我认为在您的情况下,最好的方法是更新插件上传本身 (./plugins/upload)。 目前没有满足您需求的定制。

为此,您必须更新 findAll 函数并在 map 中手动更换主机,然后再发送数据。

这是我所说的代码:https://github.com/strapi/strapi/blob/master/packages/strapi-plugin-upload/controllers/Upload.js#L122

您必须更换 url 以满足您的需要。

我运行陷入同样的​​问题,但经过大量研究,你可以做下一个:

首先使用自定义域的名称配置一个 S3 存储桶,例如:static.yourdomain.com 并在 S3 设置中将其设置为静态托管,在您的 strapi S3 提供商配置中放置下一个:

providerOptions: {
      accessKeyId: process.env.AWS_ACCESS_KEY_ID || '',
      secretAccessKey: process.env.AWS_ACCESS_SECRET || '',
      region: 'us-east-1',
      endpoint: 'static.yourdomain.com',
      s3BucketEndpoint: true,
      params: {
        Bucket: 'static.yourdomain.com'
      },
    }

在您的 DNS 中创建一个指向 s3 public 域的 CNAME static.yourdomain.com,但技巧如下:

而不是这个:

static.yourdomain.com.s3-website-us-east-1.amazonaws.com

放这个:

static.yourdomain.com.s3.amazonaws.com