自定义域名

更新时间:
复制 MD 格式

如果您希望在生产环境中通过固定域名访问Agent Sandbox极速版,或者希望使用自有证书访问沙箱中的 Web 服务,可以为Agent Sandbox极速版绑定自定义域名。

说明

自定义域名是Agent Sandbox极速版的 FC Extensions(云上扩展)能力,是 E2B 之外的扩展能力,不属于 E2B SDK 原生兼容接口。

绑定自定义域名后,您可以使用:

  • 控制链路域名:访问Agent Sandbox极速版 API,例如 https://api.example.com。

  • 数据链路域名:访问沙箱内服务,例如 https://{port}-{sandboxId}.example.com。

以 example.com 为例:

用途

示例

说明

控制链路域名

api.example.com

用于创建、查询、删除Agent Sandbox极速版等 API 请求。

数据链路域名

*.example.com

用于访问沙箱内指定端口的服务。

SDK apiUrl

https://api.example.com

SDK 访问Agent Sandbox极速版 API 的地址。

SDK domain

example.com

SDK 拼接沙箱服务访问地址时使用的基础域名。

使用限制

  • 为Agent Sandbox极速版绑定自定义域名时,必须选择Agent Sandbox极速版所在的地域。

  • 当前控制链路域名仅支持 api. 开头的单域名,例如 api.example.com。

  • 数据链路域名为控制链路域名去掉 api. 前缀后的泛域名,例如 *.example.com。

  • 必须使用 HTTPS 协议。

  • 必须上传可覆盖数据链路泛域名的证书,例如 *.example.com。仅覆盖 api.example.com 的单域名证书不满足要求。

  • 私钥必须为未加密的 RSA PEM 格式。如果您的私钥是 -----BEGIN PRIVATE KEY----- 格式,可先转换为 -----BEGIN RSA PRIVATE KEY----- 格式。

  • 不支持中文域名。

  • 同一个主账号默认最多可绑定 5 个Agent Sandbox极速版自定义域名。如需提高上限,请联系服务支持人员。

  • 自定义域名需要完成备案或接入备案,具体要求以控制台校验结果为准。

私钥格式转换示例:

openssl rsa -in pkcs8.key -out pkcs1.key

1. 添加自定义域名

  1. 登录Agent Sandbox控制台。

  2. 在左侧导航栏选择 极速版 > 域名管理。

  3. 选择Agent Sandbox极速版所在地域。

  4. 单击 创建域名。

  5. 在 创建域名 页面填写根域名,例如 example.com,创建成功后控制链路域名为 api.example.com。

  6. 按页面提示获取控制链路 CNAME 和数据链路 CNAME,用于下一步配置域名解析。

重要:自定义域名必须选择与Agent Sandbox极速版相同的地域,否则域名解析和证书校验可能无法生效。

2. 配置域名解析

登录云解析 DNS 控制台,将自定义域名解析到Agent Sandbox极速版提供的 CNAME。

CNAME 类型

主机记录

记录类型

记录值示例

控制链路 CNAME

api

CNAME

api.cn-beijing.sandbox.aliyuncs.com

数据链路 CNAME

*

CNAME

{AccountID}.cn-beijing.sandbox.aliyuncs.com

示例:如果您的主账号 ID 为 119085698835****,Agent Sandbox极速版所在地域为华北 2(北京),数据链路 CNAME 可配置为:

119085698835****.cn-beijing.sandbox.aliyuncs.com

配置完成后,建议等待 DNS 生效再提交或验证。您可以使用以下命令检查解析结果:

dig +short CNAME api.example.com
dig +short CNAME test.example.com

其中 test.example.com 用于验证 *.example.com 泛域名解析是否生效。

3. 配置 HTTPS 证书

Agent Sandbox极速版自定义域名强制使用 HTTPS。请在添加域名时上传证书和私钥。

配置项

说明

证书名称

用于标识本次上传的证书。

PEM 证书内容

填写完整证书链,需包含 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE-----。

PEM 证书密钥

填写未加密的 RSA 私钥,需包含 -----BEGIN RSA PRIVATE KEY----- 和 -----END RSA PRIVATE KEY-----。

TLS 协议版本

建议选择 TLS 1.2 或更高版本。

证书要求:

  • 证书必须在有效期内。

  • 证书和私钥必须匹配。

  • 证书必须覆盖数据链路泛域名。例如控制链路域名为 api.example.com 时,证书应覆盖 *.example.com。

4. 在 SDK 中使用自定义域名

域名添加成功后,将 SDK 中的 API 地址和数据链路基础域名替换为您绑定的自定义域名。

TypeScript 示例:

import { Sandbox } from "e2b";

const sandbox = await Sandbox.create("code-interpreter-v1", {
  apiKey: process.env.E2B_API_KEY,
  apiUrl: "https://api.example.com",
  domain: "example.com",
});

const host = sandbox.getHost(8000);
console.log(`https://${host}`);

Python 示例:

from e2b import Sandbox

sandbox = Sandbox.create(
    template="code-interpreter-v1",
    api_key=os.environ["E2B_API_KEY"],
    api_url="https://api.example.com",
    domain="example.com",
)

host = sandbox.get_host(8000)
print(f"https://{host}")

如果沙箱 ID 为 sandbox-id,访问端口为 8000,SDK 返回的访问地址形如:

https://8000-sandbox-id.example.com

5. 验证自定义域名

完成配置后,可按以下步骤验证:

  1. 使用 SDK 或 OpenAPI 创建一个Agent Sandbox极速版。

  2. 在沙箱中启动一个 HTTP 服务,例如监听 8000 端口。

  3. 调用 sandbox.getHost(8000) 获取访问域名。

  4. 使用浏览器或 curl 访问 https://{port}-{sandboxId}.example.com。

示例:

curl -v https://8000-sandbox-id.example.com

如果返回沙箱内服务响应,说明数据链路域名已生效。

常见问题

问题

可能原因

处理方式

添加域名时提示 CNAME 校验失败

DNS 未配置、记录值错误,或解析尚未生效

检查控制链路 CNAME 是否指向控制台提示的目标地址,等待 DNS 生效后重试。

HTTPS 访问时证书不匹配

证书未覆盖数据链路泛域名

上传覆盖 *.example.com 的泛域名证书。

提示私钥格式错误

私钥不是未加密 RSA PEM 格式

使用 openssl rsa -in pkcs8.key -out pkcs1.key 转换后重新上传。

SDK 仍返回默认访问域名

SDK 未配置 apiUrl 或 domain

将 apiUrl 设置为控制链路域名,将 domain 设置为数据链路基础域名。

数据链路地址无法访问

泛域名 CNAME 未生效,或沙箱内服务未监听对应端口

检查 *.example.com 解析结果,并确认沙箱内服务已启动。

达到域名数量上限

当前主账号已绑定多个自定义域名

删除不再使用的域名,或联系服务支持人员提高上限。

注意事项

  • sandbox.getHost(port) 返回的是 host,访问时通常需要拼接 https://。

  • 自定义域名适合生产或长期访问场景;临时调试也可以继续使用Agent Sandbox极速版默认访问域名。

  • 不要在未鉴权的端口服务中暴露敏感数据、内部调试接口或长期有效凭证。