华为云 ECS + Nginx 持久化部署单文件 2048:一次完整的公网上线实践

举报
yd_219023509 发表于 2026/10/21 18:41:46 2026/10/21
【摘要】 记录将单文件 2048 静态页持久化部署到华为云 ECS 的完整过程,包括安全组放行、Nginx 站点配置、目录权限、上线验证,以及常见的超时、403 与 404 排错方法。

背景

参与开放能力闯关时,很多任务要求的不只是“本地跑起来”,而是提供一个能持续访问的公网地址。本文以单文件 2048 静态页面为例,记录如何用华为云 ECS 和 Nginx 完成持久化部署,并给出可直接复用的配置、验证命令与排错思路。

这次的目标很明确:

  1. 页面只有一个静态文件,不需要数据库和后端服务;
  2. 使用 ECS 的弹性公网 IP 对外提供访问;
  3. 重启实例后服务仍能正常运行;
  4. 上线后可以通过 HTTP 状态码和页面内容进行验证。

一、准备 ECS 与网络

创建一台 Linux ECS,并绑定弹性公网 IP。对于这种纯静态页面,1 vCPU / 2 GB 的规格已经足够,系统盘 40 GB 即可。系统可以选择 Ubuntu 22.04 或 24.04。

安全组至少需要放行:

  • TCP 22:用于 SSH 登录,建议限制为自己的管理地址;
  • TCP 80:用于 HTTP 访问。

如果暂时没有配置域名,可以直接用 ECS 的弹性公网 IP 验证。安全组规则修改后通常即时生效,但如果页面仍然超时,先检查实例是否真的绑定了 EIP,再检查安全组方向是否正确。

登录实例后先确认系统版本和 Nginx 状态:

cat /etc/os-release
sudo systemctl status nginx --no-pager

如果 Nginx 尚未安装,执行:

sudo apt-get update
sudo apt-get install -y nginx

二、放置静态文件

建议不要把业务文件直接放进默认站点目录,而是建立独立目录,便于后续替换和回滚:

sudo install -d -m 0755 /var/www/hc-activity
sudo install -m 0644 index.html /var/www/hc-activity/index.html

这里的 index.html 就是单文件 2048 页面。先在服务器本机做一次最基础的检查:

curl -I http://127.0.0.1/hc-activity/index.html

如果返回 404,说明文件路径或 Nginx 配置还没有对上;如果返回 200 但页面空白,优先检查 HTML、JavaScript 和资源路径是否正确。

三、配置 Nginx 站点

新建站点配置:

sudo tee /etc/nginx/sites-available/hc-activity >/dev/null <<'EOF'
server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/hc-activity;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    add_header X-Content-Type-Options nosniff always;
    add_header Cache-Control "public, max-age=3600" always;
}
EOF

启用配置并做语法检查:

sudo ln -sfn /etc/nginx/sites-available/hc-activity /etc/nginx/sites-enabled/hc-activity
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx

这里有两个容易忽略的点:

  • nginx -t 通过后再 reload,避免把错误配置直接加载到线上;
  • 如果保留默认站点并同时声明 default_server,Nginx 可能启动失败,因此先移除默认站点的软链接。

四、验证公网访问

从本机或另一台机器执行:

curl -I http://<ECS_EIP>/hc-activity/index.html
curl -s http://<ECS_EIP>/hc-activity/index.html | head

应至少确认三件事:

  1. HTTP 状态码为 200;
  2. 响应体中出现页面的关键内容,而不是 Nginx 默认欢迎页;
  3. 重启 ECS 后再次访问仍然成功。

为了验证持久化,可以重启 Nginx:

sudo systemctl restart nginx
sudo systemctl is-enabled nginx
sudo systemctl is-active nginx

正常结果应分别是 enabled 和 active。

五、常见问题排查

1. 浏览器一直超时

先检查 EIP 与安全组,再检查实例内部防火墙和 Nginx 监听端口:

curl -I http://127.0.0.1/
sudo ss -lntp | grep ':80'

2. 返回 403 Forbidden

通常是目录权限或 index.html 权限不合适。确认 Nginx 进程能够读取目标文件,并检查路径是否与配置中的 root 一致。

3. 返回 404 Not Found

检查 URL 是否包含 /hc-activity/,以及文件是否确实位于 /var/www/hc-activity/index.html。如果使用了 try_files,还要确认文件符号链接没有被安全策略拦截。

4. 页面能打开但样式或脚本异常

静态站点的资源路径应以实际部署路径为准。单文件页面通常没有外部依赖,但若引用了 CDN 资源,需要确认网络可达;更稳妥的做法是将必要资源一并托管到 ECS。

六、上线后的基本加固

公网静态站点也应遵守最小暴露原则:

  • SSH 只放行可信来源,优先使用密钥登录;
  • 不在网页、脚本或代码仓库中写入 AK/SK、Cookie 等凭据;
  • 定期更新系统和 Nginx;
  • 配置域名后再申请 HTTPS 证书,避免长期使用明文 HTTP;
  • 保留旧版本文件或发布包,出现问题时可以快速回滚。

总结

单文件静态页面的持久化部署并不复杂,关键是把网络、文件路径、Nginx 配置和验证链路做成可重复的步骤。完成一次部署后,最好立即用“状态码 + 响应内容 + 重启验证”三条证据确认结果,而不是只看控制台显示成功。

这套方法同样适用于个人主页、活动落地页、演示 Demo 和小型工具站。后续如果有域名,可以在当前结构上增加 HTTPS 和自动续期,而不需要改动页面本身。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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