OSS为每个存储空间(Bucket)分配一系列访问域名,支持根据不同业务需求和网络环境灵活访问OSS资源。本文介绍各域名类型的格式、适用场景和配置方式,帮助选择合适的访问方式。
核心概念
标准的OSS访问地址由多个层级组合构成。准确理解以下四个核心概念,对于正确访问OSS至关重要:
概念 | 说明 | 格式 | 用途 |
Region ID | 通用地域标识 |
| 用于SDK、ossutil进行V4签名等场景 |
专用 Region ID | OSS 专用地域标识 |
| 用于构成 Endpoint、API入参、返回参数等场景 |
Endpoint | 服务访问地址 |
| 在SDK、ossutil中配置,用于建立与OSS服务的网络连接等场景 |
Bucket 域名 | 具体 Bucket的访问地址 |
| 用于浏览器直接访问、生成签名URL或托管静态网站、自定义域名 CNAME 解析等场景 |
这四个概念存在层级关系:Region ID 表示一个地理位置,OSS为其分配对应的专用 Region ID,专用 Region ID与域名后缀组合构成Endpoint(服务访问地址)。访问具体Bucket时,使用Bucket名称与Endpoint组合形成的Bucket 域名(资源访问地址)。
各地域的Region ID请参见地域和Endpoint。
域名类型
OSS根据网络环境和性能需求提供不同类型的访问域名。
域名类型 | 适用场景 | 域名格式 | 费用特点 | 是否需要开通 |
Web应用、移动客户端等公网访问 |
| 按外网流量计费 | 默认可用 | |
同地域阿里云内网访问(如ECS) |
| 免流量费 | 默认可用 | |
跨地域、跨国际高速上传/下载 |
| 按传输加速计费 | 需开启传输加速功能 | |
自定义域名绑定(静态资源托管等) |
| 按外网流量计费 | ||
IPv6网络环境访问OSS |
| 同外网流量计费 | 部分地域支持 |
外网访问域名
专为互联网访问设计,适用于Web应用、移动客户端、跨地域访问等场景。SDK默认使用外网访问域名,只需填写Region ID即可完成配置,无需额外指定Endpoint。
内网访问域名
专为阿里云内网环境设计,适用于同地域的ECS实例访问OSS等场景。通过内网访问可避免产生外网流量费用,同时获得更稳定的网络连接和更低的访问延迟。使用时建议:
DNS 配置优化
使用内网Endpoint时,强烈建议配置阿里云的云上私网DNS地址(
100.100.2.136和100.100.2.138),确保获取正确的VIP地址,避免因DNS解析问题导致OSS访问异常。VIP 网段路由配置完整性
OSS为每个Region内网VIP网段划分了固定地址段,系统会在指定VIP网段内动态切换IP地址。本地设备和数据中心通过内网访问OSS时,路由配置必须涵盖完整的VIP网段,否则可能因网络路由不完整导致连接中断。各地域的内网VIP网段信息请参见地域和Endpoint。
重要请确保路由配置涵盖完整的VIP网段,避免因配置不完整导致网络连通性问题。若因VIP网段配置缺失影响OSS服务可用性,相关损失需由配置方承担。
安全组规则配置
使用ECS实例通过内网访问OSS时,安全组规则不能禁止访问任何一个VIP网段,确保网络连通性。
传输加速域名
启用传输加速功能后可使用的专用域名,通过全球加速节点优化数据传输路径,适用于跨地域、跨国际的高速上传/下载场景,显著改善远距离访问的网络质量。
CNAME 域名
OSS 为 Bucket 生成的专用解析域名,用于自定义域名绑定场景。当需要通过自定义域名访问OSS时,应将自定义域名CNAME解析到该域名,而非外网访问 Endpoint。
OSS 会为 Bucket 分配地域内的 CNAME 域名,不同 Bucket 可能分配到不同的域名。相比所有 Bucket 共用同一个外网Endpoint,CNAME 域名分散了访问链路,具有更高的可用性。使用时注意:
仅用于 DNS 解析:CNAME 域名仅用于自定义域名的 DNS 解析配置,不支持直接访问。
通过自定义域名访问:完成自定义域名绑定和CNAME解析配置后,通过自定义域名访问 OSS 资源。
双栈域名
支持IPv4和IPv6双栈访问的Endpoint,允许IPv6网络环境下的客户端直连OSS资源。使用双栈域名时,客户端无需特殊配置,在纯IPv6或双栈网络环境中,DNS会自动解析并优先使用IPv6地址建立连接。各地域的双栈域名信息请参见地域和Endpoint。
使用示例
浏览器
通过OSS提供的访问域名访问HTML、图片等文件时,浏览器会强制下载而非在线预览。如需实现文件预览功能,请通过自定义域名访问OSS。
以下示例演示通过控制台获取私有Bucket的文件签名URL,更多获取签名URL的方式请参见使用预签名URL下载或预览文件。
前往Bucket列表,单击目标Bucket。
单击目标文件的文件名或操作列的详情,域名选择外网域名,然后单击复制文件 URL。
在浏览器中访问URL。
ossutil
以下示例演示使用命令行工具ossutil下载文件。ossutil默认使用外网访问Endpoint,可通过-e参数指定其他类型的Endpoint:
ossutil cp oss://<bucket-name>/<object-name> <local-path> -e <endpoint>不同域名类型对应的参数配置:
域名类型 | 参数配置 |
外网访问域名(默认) | 可省略 |
内网访问域名 |
|
传输加速域名 |
|
自定义域名 |
|
SDK
以下展示主流语言V2版本SDK的初始化示例。SDK默认使用外网访问域名,只需填写Region即可完成配置。
Java
OSSClient client = OSSClient.newBuilder()
.credentialsProvider(provider)
.region("<region-id>")
.build();完整的初始化代码请参见OSS Java SDK V2(预览版)。
Python
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = '<region-id>'
client = oss.Client(cfg)完整的初始化代码请参见OSS Python SDK V2。
Go
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>")
client := oss.NewClient(cfg)完整的初始化代码请参见OSS Go SDK V2。
PHP
$cfg = Configuration::loadDefault();
$cfg->setCredentialsProvider($provider);
$cfg->setRegion('<region-id>');
$client = new Oss\Client($cfg);完整的初始化代码请参见OSS PHP SDK V2。
C#
var cfg = OSS.Configuration.LoadDefault();
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
cfg.Region = "<region-id>";
using var client = new OSS.Client(cfg);完整的初始化代码请参见OSS C# SDK V2(预览版)。
Node.js
const client = new OSS({
region: 'oss-<region-id>',
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
});完整的初始化代码请参见OSS Node.js SDK。
切换域名类型
V2版本SDK支持通过配置项快速切换域名类型,无需手动拼接Endpoint字符串:
语言 | 外网访问域名 | 内网访问域名 | 传输加速域名 | 双栈域名 |
Java | 仅设置 |
|
|
|
Python | 仅设置 |
|
|
|
Go | 仅设置 |
|
|
|
PHP | 仅设置 |
|
|
|
C# | 仅设置 |
|
|
|
Node.js SDK 不支持上述配置项,需通过
endpoint参数直接指定目标Endpoint字符串。可以在所有SDK中通过
endpoint参数直接指定任意Endpoint字符串,效果相同。如需使用V1版本SDK,请参见对应语言的V1文档:OSS Java SDK V1 | OSS Python SDK V1 | OSS Go SDK V1 | OSS PHP SDK V1 | OSS C# SDK V1。
更多语言的SDK集成示例请参见SDK参考。
协议支持
所有地域的Endpoint和Bucket域名均支持HTTP和HTTPS两种协议访问。为确保数据传输安全性,强烈建议在生产环境中使用HTTPS协议。