开发者社区 问答 正文

Ruby-SDK之如何实现自定义域名绑定?

OSS支持用户将自定义的域名绑定到OSS服务上,这样能够支持用户无缝地将存储 迁移到OSS上。例如用户的域名是my-domain.com,之前用户的所有图片资源都是 形如 的格式,用户将图片存储迁移到OSS之 后,通过绑定自定义域名,仍可以使用原来的地址访问到图片:

  • 开通OSS服务并创建Bucket
  • 将img.my-domain.com与创建的Bucket绑定
  • 将图片上传到OSS的这个Bucket中
  • 修改域名的DNS配置,增加一个CNAME记录,将img.my-domain.com指向OSS服务 的endpoint(如my-bucket.oss-cn-hangzhou.aliyuncs.com)

这样就可以通过原地址 访问到存储在OSS上 的图片。 绑定自定义域名请参考 自定义域名绑定
在使用SDK时,也可以使用自定义域名作为endpoint,这时需要将:cname参数 设置为true,如下面的例子: require 'aliyun/oss'

include Aliyun::OSS

client = Client.new(
  endpoint: 'ENDPOINT',
  access_key_id: 'ACCESS_KEY_ID',
  access_key_secret: 'ACCESS_KEY_SECRET',
  cname: true)

bucket = client.get_bucket('my-bucket')


注意:
  • 使用CNAME时,无法使用list_buckets接口。(因为自定义域名已经绑定到 某个特定的Bucket)

展开
收起
青衫无名 2017-10-19 13:54:17 2027 分享 版权
阿里云 AI 助理回答

您已经概述了在阿里云对象存储服务(OSS)上绑定自定义域名并使用该域名访问存储资源的基本步骤,这里我再为您详细梳理一下整个流程,并补充一些关键点和注意事项:

步骤概览

  1. 开通OSS服务并创建Bucket

    • 登录阿里云控制台,选择“对象存储OSS”服务,然后创建一个新的Bucket。Bucket是OSS中用于存储对象(文件)的容器。
  2. 绑定自定义域名

    • 在Bucket的管理界面,找到“域名管理”或“绑定域名”功能,输入您希望绑定的自定义域名,例如img.my-domain.com
    • 这一步操作后,OSS会提供一个需要添加到您域名DNS配置中的CNAME记录值,如my-bucket.oss-cn-hangzhou.aliyuncs.com
  3. 修改DNS配置

    • 登录您的域名提供商后台,为img.my-domain.com添加CNAME记录,指向OSS提供的endpoint地址。这一步是为了将自定义域名解析到OSS Bucket上。
  4. 上传文件至OSS Bucket

    • 使用OSS控制台、SDK或者CLI工具,将图片等资源上传到刚才创建并绑定了自定义域名的Bucket中。
  5. 通过自定义域名访问资源

    • 上传完成后,用户可以通过原来的地址格式(如http://img.my-domain.com/your-image.jpg)访问到OSS上的图片资源。

SDK使用自定义域名

  • 当您在代码中使用阿里云OSS SDK时,可以指定自定义域名作为endpoint,并设置cname: true来启用CNAME支持。示例代码您已给出,确保替换ENDPOINTACCESS_KEY_IDACCESS_KEY_SECRET为实际的值。

注意事项

  • CNAME与list_buckets限制:一旦使用自定义域名(CNAME),由于DNS解析的特性,直接通过SDK调用list_buckets接口可能会失败,因为这个接口需要直接访问OSS的服务端点,而不是通过CNAME解析的Bucket特定地址。

  • DNS生效时间:修改DNS记录后,全球DNS解析更新可能需要一定时间(通常几分钟到几小时不等),在此期间通过自定义域名访问资源可能会失败。

  • SSL证书:如果您的应用场景需要HTTPS,记得为自定义域名配置SSL证书。阿里云OSS支持为绑定的自定义域名托管免费的SSL证书。

  • 跨域资源共享(CORS):如果您打算从不同源的Web页面访问这些资源,还需要在OSS Bucket中配置CORS规则以允许跨域请求。

按照上述步骤操作,您可以顺利地将自定义域名与OSS服务绑定,实现无缝迁移存储资源的同时保持原有访问路径不变。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答