将单文件 2048 部署到 Nginx,并用 DevBridge 验证公网访问

举报
yd_216136260 发表于 2026/10/21 21:25:48 2026/10/21
【摘要】 以单文件2048游戏为例,记录Linux本地HTTP服务、DevBridge临时公网隧道与Nginx长期托管的部署步骤,包含凭证隔离、路由配置、HTTP验证及游戏合并算法检查。

一个小型前端项目上线时,最容易混淆的是三个地址:本地 HTTP 服务地址、临时公网隧道地址,以及服务器长期使用的公网地址。这次实践用单文件 2048 游戏把三者分别跑通,再检查它们实际返回的内容。

游戏采用纯 HTML、CSS 和 JavaScript,包含方向键、WASD 和触屏滑动操作,支持合并计分、最高分、游戏结束判定和浏览器本地保存,不依赖 npm 或构建工具。服务器使用已有的 Ubuntu Linux 实例,以下路径和端口可按实际环境调整。

先让页面在服务器本地跑起来

把 index.html 放进独立的站点目录,再启动只监听回环地址的 HTTP 服务:

mkdir -p /opt/2048/site
# 将自己的 index.html 放到 /opt/2048/site/
python3 -m http.server 18080 \
  --bind 127.0.0.1 \
  --directory /opt/2048/site

这个命令在前台运行。换一个终端检查响应:

curl -sI http://127.0.0.1:18080/
curl -fsS http://127.0.0.1:18080/ | head

本地服务返回 HTTP 200 后,还应检查 HTML 标题和页面内容,防止访问到同端口上的其他应用。由于服务只绑定 127.0.0.1,这一步不需要向公网开放 18080 端口。

用 DevBridge 做临时公网验证

DevBridge 可以将本地端口映射到公网。此次使用官方发布的 0.2.2-release Linux amd64 版本,下载后对照同一 release 的 checksums.txt 检查 SHA-256,再解压运行。版本和处理器架构应以目标机器为准。

官方下载地址:DevBridge Releases。

先检查当前二进制的实际参数:

devbridge version
devbridge auth login --help
devbridge host --help

本次使用的发布版支持 auth login --api-key。API Key 从华为云 DevBridge 密钥管理页面创建,完整值只展示一次,应保存在受限文件中,不能放进站点目录、文章、截图或代码仓库。

在 Bash 中,可以通过隐藏输入完成首次登录:

read -rsp 'DevBridge API Key: ' DB_KEY
printf '\n'
devbridge auth login --api-key "$DB_KEY"
unset DB_KEY
devbridge auth status

命令行参数可能被同机有权限的用户查看,应在可信机器上操作。AK/SK 与 DevBridge API Key 的用途不同,不要混用。

让前面的 HTTP 服务保持运行,然后启动隧道:

devbridge host -p 18080 -e 8 -d Game2048

-e 8 表示隧道有效期为 8 小时。命令输出公网地址后,从另一台机器检查:

curl -sI 'https://<隧道标识>-18080.devbridge-s2.hwtunnel.com/'

再用浏览器打开地址,操作游戏,确认移动、合并和计分正常。浏览器首次访问可能出现开发者隧道提示;只有确认链接属于自己部署的服务后再继续。HTTP 检查与浏览器检查都需要做,单看状态码不能证明打开的就是目标页面。

用 Nginx 提供长期访问地址

临时隧道适合预览和验证,长期访问可交给服务器已有的 Nginx。若 80 端口已经有其他业务,不要覆盖整个配置,也不要另外增加一个冲突的默认站点。此次只在负责该公网地址的 HTTP server 块里加入一个精确匹配的路径:

location = /hc-activity/index.html {
    alias /opt/2048/site/index.html;
    default_type text/html;
    add_header X-Content-Type-Options nosniff;
}

修改前备份原配置,确认 Nginx 工作进程能读取页面文件及其上级目录。随后检查语法并重新加载:

sudo nginx -t
sudo nginx -s reload

验证本地和公网地址:

curl -sI http://127.0.0.1/hc-activity/index.html
curl -sI http://<服务器公网IP>/hc-activity/index.html

公网访问还取决于安全组、防火墙和 Nginx 的监听配置。排查时可以依次看本地服务、Nginx 本地响应、服务器公网响应,避免一上来就修改安全组。本次复用了已经开放的 HTTP 服务,没有新增端口规则。

此次测试中,Nginx 重新加载后的第一个请求仍遇到了旧响应,再次请求才获得新页面。因此修改配置后应重新建立连接验证,并检查响应内容,不能只凭 reload 命令退出成功就判断部署完成。

把游戏逻辑和部署检查分开

页面能打开之后,还需要检查游戏本身。比如一行 [2,2,2,2] 向左移动应得到 [4,4,0,0],本步得分增加 8;[2,2,4,0] 应得到 [4,4,0,0],不能在同一步继续合成 8。填满且相邻数字都不相同的棋盘,应触发游戏结束。

这次把合并算法检查与浏览器操作检查分开进行:前者验证一次合并、计分和结束判定,后者验证真实页面能响应按键。浏览器刷新后,也要检查保存的进度能否恢复。

最终保留的长期入口是 Nginx 的 /hc-activity/index.html。临时 HTTP 服务和 DevBridge 隧道需要进程持续运行,不会因为写了过期时长就自动变成常驻服务;若需要跨重启运行,应再配置 systemd 等进程管理。后续移除应用时,可删除本次新增的精确路由和站点文件,并重新验证原有业务。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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