从 DevBridge 隧道到 ECS:一次单页游戏的完整上线实践
背景
把一个单文件 2048 游戏真正上线,比想象中多踩了几个坑。整个过程分两段:先用 DevBridge 开发隧道拿到临时公网域名做快速预览,再用 ECS 做持久化部署。这篇记录完整步骤和遇到的问题。
一、沙箱预览:DevBridge 开发隧道
DevBridge 是华为云开发者空间提供的开发隧道服务,核心思路是让本地服务主动向中继集群建立出站连接,不需要在本地开放公网入端口。
1. 准备 API Key 访问开发者空间的 DevBridge 管理页新建 API Key。密钥只在创建时完整显示一次,务必当场保存。需要注意 v0.2.x 之后 CLI 已经移除了 AK/SK 登录方式,只支持 API Key 鉴权。
2. 创建隧道并开放端口 devbridge auth login 登录后,先 create 建隧道并记下 Tunnel ID,再 port create 绑定本地端口,最后 host 启动托管。port create 时要注意匿名访问策略,默认策略是拒绝匿名,如果不显式允许,公网访问会返回 authentication required。
3. 域名格式 新版集群的域名后缀是 devbridge-s2.hwtunnel.com,旧版的 cn-north-4-bridge.myhuaweicloud.com 已经不可用。做活动提交这类有格式校验的场景时要注意,前端正则通常只认新域名。
二、持久化部署:ECS 加 Nginx
临时隧道适合演示,但要长期可访问还是得上 ECS。用 Python SDK 按需创建实例,关键参数包括规格、镜像、VPC、子网、安全组和公网 IP。公网 IP 通过 publicip 字段指定,带宽按流量计费更适合演示场景。
把部署逻辑写进 user_data,实例开机后自动执行 apt 安装 Nginx、写入页面、重启服务。注意 user_data 需要先做 base64 编码再传给接口。
安全组必须放通端口,这一步最容易被忽略。默认安全组通常只开了 22 和 3389,80 端口是不通的。实例明明是 ACTIVE、Nginx 也起来了,但外网 curl 一直超时或者连接被拒,原因就在这里。补一条 80 端口的入方向规则即可。
三、几个排查经验
规格已被淘汰:创建时如果报 flavor is abandoned,说明这个规格下线了。不要凭记忆写规格 ID,先调 ListFlavors 查当前可用的。
请求参数名要对:ECS 的创建接口对字段名很敏感,比如标签字段是 server_tags 而不是 tags,写错了会返回 convert request fail,但不会告诉你具体哪个字段。
验证不能只看 HTTP 200:页面能返回 200 不代表功能正常。真正要确认的是 DOM 渲染出来、事件能响应、状态能变化。用浏览器自动化跑一遍按键输入,看分数是否变化,比 curl 看状态码可靠得多。
四、小结
整条链路的核心是两块:DevBridge 解决快速预览,ECS 解决持久化。前者几乎零成本,适合开发阶段反复调试;后者虽然要花一点钱,但地址稳定、可控性强。真正的坑集中在三处:安全组端口、规格可用性、以及请求体字段的精确性。前两处是配置问题,第三处是文档问题,都只能靠实际调用去试。
- 点赞
- 收藏
- 关注作者
评论(0)