访问云服务器
云开发提供了多种方式访问轻量应用服务器上部署的服务,满足不同场景的需求:
| 访问方式 | 适用场景 | 特点 |
|---|---|---|
| 小程序 SDK 访问 | 微信小程序调用后端服务 | 内网访问、自动携带用户身份、无需暴露公网 IP |
| HTTP 访问服务 | Web 应用、H5 页面、第三方系统调用 | 支持自定义域名、HTTPS 加密、便于管理 |
| 公网 IP 直连 | 开发测试、临时访问 | 灵活、支持任意协议和端口 |
推荐方式
- 生产环境:建议使用 HTTP 访问服务 绑定自定义域名,获得更好的稳定性和安全性
- 小程序场景:使用 小程序 SDK 访问,享受内网加速和身份认证能力
- 开发调试:可以临时使用 公网 IP 直连 进行快速验证
方式一:小程序 SDK 访问
小程序可以通过微信云开发 SDK 直接调用云服务器接口,无需暴露公网 IP,享受内网加速和自动身份认证。当前小程序 SDK 访问时,仅可以请求到云服务器上的 80 端口,请确保在 80 端口上启动服务并进行监听。
前置准备
确保云服务器上的服务已启动并监听 80 端口。可以通过以下方式实现:
- 使用 Nginx 反向代理:将 80 端口转发到应用端口
- 应用直接监听 80 端口:配置 Web 框架(如 Express、Flask 等)监听 80 端口
代码示例
// 1. 在小程序 app.js 的 onLaunch 中初始化云开发环境
wx.cloud.init({
env: 'your-env-id', // 替换为你的环境 ID
traceUser: true,
})
// 2. 在需要调用的地方使用 callContainer 方法
const result = await wx.cloud.callContainer({
config: {
env: "your-env-id" // 可以在调用时指定环境
},
header: {
"X-WX-SERVICE": "tcbanyservice", // 【必填】固定值,指定云开发服务
"X-Vm-Service": "lhins-xxxxxxxxx", // 【必填】替换为你的实例 ID
// 可以添加其他自定义 Header
},
path: "/api/user/info", // API 路径
method: "POST", // HTTP 方法
data: { // 请求参数
userId: 123
}
})
console.log('Response:', result.data)
核心参数说明
| Header 字段 | 是否必填 | 说明 | 示例值 |
|---|---|---|---|
X-WX-SERVICE | ✅ 必填 | 固定为 tcbanyservice,用于路由到云开发服务 | tcbanyservice |
X-Vm-Service | ✅ 必填 | 轻量服务器的实例 ID,在控制台可查看 | lhins-abc123 |
如何获取实例 ID
在 云开发控制台 - 云服务器 页面,点击服务器名称可查看实例 ID(格式如 lhins-xxxxxxxxx)
调试步骤
-
本地验证:使用公 网 IP + 80 端口测试服务是否正常
curl http://<服务器公网IP>/api/user/info -
小程序端验证:确认本地验证通过后,在小程序开发者工具中测试 SDK 调用
自动注入的信息
云开发会在请求 Header 中自动携带小程序用户和环境信息,后端服务可直接读取这些 Header 实现身份验证和业务逻辑:
用户身份信息
| Header 字段 | 说明 | 示例 |
|---|---|---|
X-WX-OPENID | 用户 OpenID(用户唯一标识) | oABCD1234567890 |
X-WX-APPID | 小程序 AppID | wx1234567890abcdef |
X-WX-UNIONID | 用户 UnionID(跨应用标识,需满足条件) | oUNIONabcd123456 |
环境与调用信息
| Header 字段 | 说明 | 示例 |
|---|---|---|
X-WX-ENV | 云开发环境 ID | test-1a2b3c |
X-WX-SOURCE | 调用来源 | wx_devtools(开发者工具)wx_client(真机) |
X-WX-PLATFORM | 调用平台 | devtools / android / ios |
X-Forwarded-For | 客户端真实 IP(支持 IPv4/IPv6) | 192.168.1.100 |
资源复用场景(当使用其他小程序的云资源时)
| Header 字段 | 说明 |
|---|---|
X-WX-FROM-OPENID | 资源所属小程序的用户 OpenID |
X-WX-FROM-APPID | 资源所属小程序的 AppID |
X-WX-FROM-UNIONID | 资源所属小程序的用户 UnionID |
后端获取示例(Node.js Express)
app.post('/api/user/info', (req, res) => {
// 获取用户 OpenID
const openid = req.headers['x-wx-openid']
const appid = req.headers['x-wx-appid']
console.log('User OpenID:', openid)
console.log('App ID:', appid)
// 业务逻辑...
res.json({ code: 0, message: 'success' })
})
响应信息
云开发会在响应中添加调试和监控相关的 Header:
| Header 字段 | 说明 |
|---|---|
X-Cloudbase-Request-Id | 请求唯一标识,用于问题追踪和日志查询 |
X-Cloudbase-Upstream-Status-Code | 后端服务实际返回的 HTTP 状态码 |
X-Cloudbase-Upstream-Timecost | 后端服务处理耗时(毫秒) |
X-Cloudbase-Upstream-Type | 后端服务类型标识 |
故障排查
遇到问题时,请记录 X-Cloudbase-Request-Id,提供给技术支持以便快速定位问题。
方式二:HTTP 访问服务(推荐)
CloudBase 提供统一的 HTTP 访问服务,通过域名绑定的方式访问云服务器,支持 HTTPS 加密、自定义域名,适合生产环境使用。
核心优势
- ✅ HTTPS 加密传输:自动配置 SSL 证书,保障数据安全
- ✅ 自定义域名支持:可绑定已备案域名,提升品牌形象
- ✅ 统一访问管理:在控制台统一管理所有访问路径
- ✅ 适用多种场景:Web 应用、H5 页面、API 服务、第三方系统调用
配置步骤
步骤 1:创建路由配置
- 登录 云开发控制台,进入目标环境
- 点击左侧菜单「HTTP 访问服务」
- 在「路由配置」模块点击「新建」按钮
- 填写配置信息:
| 配置项 | 说明 | 示例 |
|---|---|---|
| 关联资源类型 | 选择「云服务器」 | - |
| 选择实例 | 选择目标轻量应用服务器实例 | lhins-abc123 |
| 域名 | 可选择默认域名、自定义域名或 *(所有域名) | 默认域名 或 api.example.com |
| 触发路径 | 设置访问路径,支持 / 或自定义路径 | / 或 /api |
关于域名选择
- 默认域名:云开发提供的
xxx.service.tcloudbase.com,开通即用 - 自定义域名:需已完成 ICP 备案,并配置 DNS 解析,详见 自定义域名配置
*通配符:匹配所有访问域名,适合多域名场景