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請參見Regions and endpoints。
網域名稱類型
OSS根據網路環境和效能需求提供不同類型的訪問網域名稱。
Due to a policy change to improve compliance and security, starting March 20, 2025, new OSS users must use a custom domain name (CNAME) to perform data API operations on OSS buckets located in Chinese mainland regions. Default public endpoints are restricted for these operations. Refer to the official announcement for a complete list of the affected operations. If you access your data via HTTPS, you must bind a valid SSL Certificate to your custom domain. This is mandatory for OSS Console access, as the console enforces HTTPS.
網域名稱類型 | 適用情境 | 網域名稱格式 | 費用特點 | 是否需要開通 |
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網段資訊請參見Regions and endpoints。
重要請確保路由配置涵蓋完整的VIP網段,避免因配置不完整導致網路連通性問題。若因VIP網段配置缺失影響OSS服務可用性,相關損失需由配置方承擔。
安全性群組規則配置
使用ECS執行個體通過內網訪問OSS時,安全性群組規則不能禁止訪問任何一個VIP網段,確保網路連通性。
傳輸加速網域名稱
啟用傳輸加速功能後可使用的專用網域名稱,通過Global Acceleration節點最佳化資料轉送路徑,適用於跨地區、跨國際的高速上傳/下載情境,顯著改善遠距離訪問的網路品質。
CNAME 網域名稱
OSS 為 Bucket 產生的專用解析網域名稱,用於自訂網域名綁定情境。當需要Access OSS through a custom domain name時,應將自訂網域名CNAME解析到該網域名稱,而非外網訪問 Endpoint。
OSS 會為 Bucket 分配地區內的 CNAME 網域名稱,不同 Bucket 可能分配到不同的網域名稱。相比所有 Bucket 共用同一個外網Endpoint,CNAME 網域名稱分散了訪問鏈路,具有更高的可用性。使用時注意:
僅用於 DNS 解析:CNAME 網域名稱僅用於自訂網域名的 DNS 解析配置,不支援直接存取。
通過自訂網域名訪問:完成自訂網域名綁定和CNAME解析配置後,通過自訂網域名訪問 OSS 資源。
雙棧網域名稱
支援IPv4和IPv6雙棧訪問的Endpoint,允許IPv6網路環境下的用戶端直連OSS資源。使用雙棧網域名稱時,用戶端無需特殊配置,在純IPv6或雙棧網路環境中,DNS會自動解析並優先使用IPv6地址建立串連。各地區的雙棧網域名稱資訊請參見Regions and endpoints。
使用樣本
瀏覽器
通過OSS提供的訪問網域名稱訪問HTML、圖片等檔案時,瀏覽器會強制下載而非線上預覽。如需實現檔案預覽功能,請Access OSS through a custom domain name。
以下樣本示範通過控制台擷取私人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 SDK for Java 2.0 (preview)。
Python
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = '<region-id>'
client = oss.Client(cfg)完整的初始化代碼請參見OSS SDK for Python 2.0。
Go
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion("<region-id>")
client := oss.NewClient(cfg)完整的初始化代碼請參見OSS SDK for Go V2。
PHP
$cfg = Configuration::loadDefault();
$cfg->setCredentialsProvider($provider);
$cfg->setRegion('<region-id>');
$client = new Oss\Client($cfg);完整的初始化代碼請參見OSS SDK for PHP 2.0。
C#
var cfg = OSS.Configuration.LoadDefault();
cfg.CredentialsProvider = new OSS.Credentials.EnvironmentVariableCredentialsProvider();
cfg.Region = "<region-id>";
using var client = new OSS.Client(cfg);完整的初始化代碼請參見OSS SDK for C# 2.0 (preview)。
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 SDK for Node.js。
切換網域名稱類型
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 SDK for PHP 1.0 | OSS SDK for C#。
更多語言的SDK整合樣本請參見SDK參考。
協議支援
所有地區的Endpoint和Bucket網域名稱均支援HTTP和HTTPS兩種協議訪問。為確保資料轉送安全性,強烈建議在生產環境中使用HTTPS協議。