把静态活动页稳稳发布到公网:华为云 ECS + Nginx 的一次可复核部署
把静态活动页稳稳发布到公网:华为云 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 服务还是云上网络。
上线前的四项检查
- 确认 EIP 已绑定到目标 ECS,且实例处于运行中。
- 安全组入方向只开放业务需要的端口;发布静态页时至少放通 TCP 80,SSH 22 建议限制为固定出口 IP。
- 确认服务器系统时间正常,避免后续日志时间线混乱。
- 准备一个不依赖外部接口的
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、访问日志轮转和资源到期提醒。
一次可靠发布的标准,不是“页面偶尔能打开”,而是路径、权限、网络和验证步骤都可重复。把这些检查固化成清单后,下一次部署就只需要替换目录与域名,减少重复排查成本。
- 点赞
- 收藏
- 关注作者
评论(0)