把静态活动页稳稳发布到公网:华为云 ECS + Nginx 的一次可复核部署

举报
yd_219023509 发表于 2026/10/24 06:51:47 2026/10/24
【摘要】 以华为云 ECS 发布静态活动页为例,梳理安全组与 EIP 检查、文件权限、Nginx 路径配置、两段式验证,以及 systemd timer 低频健康检查的完整流程,帮助把公网部署做成可复现、可排查、可追溯的交付。

把静态活动页稳稳发布到公网:华为云 ECS + Nginx 的一次可复核部署

静态页面上线看似只是“传一个 HTML 上去”,真正影响交付质量的却是资源、网络、Web 服务和验证记录是否能串成闭环。本文以在华为云 ECS 上发布一个 /hc-activity/index.html 活动页为例,整理一套可以复用的部署与排查方法。

目标与最小架构

本次部署使用一台 Ubuntu ECS、一个绑定到实例的 EIP、放通 80 端口的安全组,以及 Nginx。目录规划为:

  • 站点目录:/var/www/hc-activity
  • 公网入口:http://<EIP>/hc-activity/index.html
  • 本机回环验证:http://127.0.0.1/hc-activity/index.html

把“本机回环地址能访问”和“公网地址能访问”分开验证,可以快速判断问题在 Web 服务还是云上网络。

上线前的四项检查

  1. 确认 EIP 已绑定到目标 ECS,且实例处于运行中。
  2. 安全组入方向只开放业务需要的端口;发布静态页时至少放通 TCP 80,SSH 22 建议限制为固定出口 IP。
  3. 确认服务器系统时间正常,避免后续日志时间线混乱。
  4. 准备一个不依赖外部接口的 index.html,避免页面因第三方资源失效而白屏。

在 Ubuntu 上安装 Nginx 与排查工具:

sudo apt update
sudo apt install -y nginx curl

上传与目录准备

先在本地打包站点,减少逐文件传输带来的遗漏:

tar -czf hc-activity.tar.gz hc-activity
scp hc-activity.tar.gz ubuntu@<EIP>:/tmp/

登录 ECS 后解压到 Web 根目录:

sudo mkdir -p /var/www/hc-activity
sudo tar -xzf /tmp/hc-activity.tar.gz \
  -C /var/www/hc-activity --strip-components=1
sudo chown -R www-data:www-data /var/www/hc-activity
sudo find /var/www/hc-activity -type d -exec chmod 755 {} \;
sudo find /var/www/hc-activity -type f -exec chmod 644 {} \;

使用 www-data 作为静态文件属主,并区分目录与文件的权限,比直接执行 chmod 777 更可控。

配置 Nginx 路径

新建 /etc/nginx/sites-available/hc-activity:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;

    root /var/www;
    index index.html;

    location /hc-activity/ {
        try_files $uri $uri/ =404;
    }
}

启用配置。如果默认站点仍占用了 default_server,需要先处理冲突,再启用当前文件:

sudo ln -s /etc/nginx/sites-available/hc-activity \
  /etc/nginx/sites-enabled/hc-activity
sudo unlink /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl enable --now nginx
sudo systemctl reload nginx

这里最容易出错的是 root 与 URL 路径的对应关系。root /var/www; 配合 /hc-activity/ 请求,实际读取的是 /var/www/hc-activity/,因此目录结构必须完全对应。

用两段验证代替“打开看看”

先验证本机服务:

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

预期响应包含:

HTTP/1.1 200 OK
Content-Type: text/html

再从本地终端验证公网链路:

curl -I http://<EIP>/hc-activity/index.html

两段验证的结果可以帮助定位问题:

  • 两次都超时:检查 Nginx 是否运行,以及本机回环地址是否可达。
  • 本机返回 200、公网超时:优先检查安全组、EIP 绑定和云侧网络。
  • 公网返回 404:多数是 root、目录层级或文件名不一致。
  • 公网返回 403:检查文件权限与 Nginx 运行用户是否具备读取权限。

增加一个轻量健康检查

活动页上线后,可以用系统自带工具做低频存活检查,不必引入复杂依赖。创建脚本 /usr/local/bin/hc-page-check.sh:

#!/usr/bin/env bash
set -euo pipefail

url="http://127.0.0.1/hc-activity/index.html"
code=$(curl -sS -o /dev/null -w '%{http_code}' "$url")

if [[ "$code" != "200" ]]; then
  logger -t hc-activity "health check failed: status=$code"
  exit 1
fi

再配合 systemd timer,每 5 分钟检查一次。失败信息进入系统日志,既不会向页面打印敏感配置,也能留下可追溯记录。对临时活动页来说,这通常比堆叠完整监控平台更划算。

安全与收尾

  • 不要在静态 HTML 中写入 AK/SK、Cookie、访问票据或内部地址。
  • 安全组遵循最小开放原则,SSH 不应对全网长期开放。
  • 发布后保存一份验证记录:时间、EIP、HTTP 状态码、资源名称和截图。
  • 正式站点建议补充 HTTPS、访问日志轮转和资源到期提醒。

一次可靠发布的标准,不是“页面偶尔能打开”,而是路径、权限、网络和验证步骤都可重复。把这些检查固化成清单后,下一次部署就只需要替换目录与域名,减少重复排查成本。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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