用 DevBridge 隧道把开发者空间沙箱里的服务暴露到公网:步骤与踩坑

举报
yd_223504780 发表于 2026/10/24 21:30:06 2026/10/24
【摘要】 沙箱没有公网 IP 时,用开发者空间镜像自带的 DevBridge 隧道几条命令拿到 HTTPS 外网地址:服务自检、API Key 登录、create/port/host 三步、外网验证,以及进程常驻、有效期、规格选择等坑。

前几天在华为云开发者空间的云开发环境(devkitsandbox 镜像)里跑了一个静态小页面,需要让外网直接访问。沙箱本身没有公网 IP,这时候用镜像自带的 DevBridge 隧道最省事:几条命令就能拿到一个 https://xxx-端口.devbridge-s2.hwtunnel.com 形式的 HTTPS 地址。下面把完整流程和实际踩到的几个坑记下来。

一、先在沙箱里把服务跑起来

隧道只是转发,前提是沙箱内部端口真的有服务在监听。静态页面最简单的做法是 Python 内置服务器:

mkdir -p /workspace/site
cp index.html /workspace/site/
cd /workspace/site
nohup python3 -m http.server 8080 --bind 0.0.0.0 > /tmp/http.log 2>&1 &
curl -sI http://127.0.0.1:8080/ | head -1   # 期望 HTTP/1.0 200 OK

建议用 8080 这类非特权端口,避免和镜像里可能已占用的 80 端口冲突。一定要先在沙箱内用 curl 确认 200,再去建隧道,否则后面拿到的公网地址只会返回 502,很难判断是隧道问题还是服务问题。

二、登录 DevBridge

在 DevBridge 控制台创建一个 API Key(以 devbridge_ 开头),然后在沙箱终端里登录:

devbridge auth login --api-key devbridge_xxxxxxxx

API Key 相当于账号凭据,不要写进仓库或截图里;用完可以在控制台删除。

三、创建隧道、端口并挂载

# 1. 创建隧道,记下返回的 tunnelId
devbridge create my-site

# 2. 为隧道声明端口(-a 用于对外公开访问)
devbridge port create <tunnelId> -p 8080 --protocol http -a

# 3. 把本机端口挂到隧道上(前台运行)
devbridge host <tunnelId> -p 8080

第 3 步的输出里会出现一行 TUNNEL_URL:https://<tunnelId>-8080.devbridge-s2.hwtunnel.com,这就是对外地址。注意域名里带端口号,换端口地址就会变。

四、外网验证

curl -sI https://<tunnelId>-8080.devbridge-s2.hwtunnel.com/ | head -1

在自己电脑上(不是沙箱里)执行,返回 200 才算真正打通。如果外网访问被要求登录,检查第 3 步建端口时是否带了 -a。

五、踩过的坑

  • host 进程要常驻。devbridge host 是前台进程,终端一断隧道就断。可以 nohup devbridge host <tunnelId> -p 8080 > /tmp/tunnel.log 2>&1 & 放后台,再用 grep TUNNEL_URL /tmp/tunnel.log 取地址。
  • 隧道有有效期。默认有效期较短,需要长期展示的话要在控制台或命令里延长,否则过几天地址就失效了。
  • 沙箱回收后优先复用原隧道。tunnelId 是账号维度的资源,不跟着容器走。重新进环境后先重新起服务、再执行一次 devbridge host <原tunnelId>,理论上地址不变,不必重新 create(这一点我还没遇到回收,未实测,仅供参考)。
  • 环境规格选小一点。创建云开发环境时 4C8G 及以上规格高峰期经常提示无可用资源,2C4G 基本秒开,跑静态页面完全够用。
  • "环境就绪"不等于能连上。控制台显示就绪后,偶尔会遇到 Web IDE 打不开的情况,可以改用本地 VS Code 远程连接或 hdspace CLI 建 SSH 隧道进终端。

六、小结

整个流程就是:沙箱内起服务并 curl 自检 → API Key 登录 → create / port create -a / host 三步 → 外网 curl 验证。相比自己买公网 IP 或配置反向代理,DevBridge 适合临时演示、联调回调地址这类场景;需要长期稳定对外的服务,还是建议部署到云服务器上,用安全组和 systemd 管理。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。