华为云 ECS (Ubuntu 22.04) 使用 Docker 与 Nginx 快速部署静态服务及反向代理实战

举报
yd_273651526 发表于 2026/10/27 14:29:57 2026/10/27
【摘要】 本文记录了在华为云弹性云服务器 ECS(Ubuntu 22.04 LTS)环境下,从零配置 Docker 容器环境、部署轻量 Web 容器,并利用宿主机 Nginx 配置反向代理与安全组放行的完整流程,适合云服务初学者快速上手参考。

前言

在日常开发与测试中,将前端静态项目或轻量级 Web 服务快速上线是高频需求。相比传统直接在宿主机编译安装各类运行环境,采用 Docker 容器化部署 + Nginx 反向代理 的架构,不仅能保持华为云弹性云服务器(ECS)宿主机环境的干净整洁,还能实现多服务的端口隔离与快速迁移。

本文将基于华为云 Ubuntu 22.04 LTS 实例,完整演示从环境初始化、容器启动到 Nginx 反向代理配置的实战步骤。


一、 环境准备与安全组配置

1. 服务器基础配置

  • 云服务商:华为云弹性云服务器 ECS(或 Flexus 应用服务器 L 实例)
  • 操作系统:Ubuntu 22.04 64位
  • 网络要求:已绑定弹性公网 IP(EIP)

2. 配置华为云安全组

在开始部署前,需确保华为云控制台的安全组入方向规则已放行 Web 访问所需的端口:

  1. 登录华为云控制台,进入 弹性云服务器 ECS 页面。
  2. 点击实例名称进入详情页,切换到 安全组 标签页,点击 配置规则。
  3. 在 入方向规则 中点击 添加规则,放行以下端口:
    • TCP: 80(HTTP 默认端口)
    • TCP: 443(HTTPS 默认端口)

二、 安装 Docker 与基础工具

通过 SSH 登录服务器终端,首先更新 APT 软件包索引并安装必要的系统工具:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget vim git ca-certificates gnupg lsb-release

接着安装 Docker 引擎并启动服务:

# 安装 Docker 官方包
sudo apt install -y docker.io docker-compose

# 设置开机自启并立即启动 Docker
sudo systemctl enable --now docker

# 验证安装结果
docker --version

当终端正常输出 Docker 版本号(如 Docker version 24.0.x)时,说明容器环境已就绪。


三、 使用 Docker 启动后端 Web 容器

为了演示容器隔离效果,我们在宿主机创建一个存放站点静态资源的目录,并启动一个运行在本地 8080 端口的容器(仅监听本地回环地址 127.0.0.1,不直接暴露到公网,由宿主机统一代理):

# 1. 创建项目工作目录与测试页面
mkdir -p /opt/web-demo/html
cat << 'EOF' > /opt/web-demo/html/index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>华为云 ECS 部署测试</title>
    <style>
        body { font-family: sans-serif; text-align: center; padding-top: 100px; background: #f5f7fa; }
        .card { display: inline-block; background: #fff; padding: 30px 50px; border-radius: 8px; box-shadow: 0 2px 12px rgba(0,0,0,0.08); }
        h1 { color: #e60012; }
    </style>
</head>
<body>
    <div class="card">
        <h1>Hello, Huawei Cloud!</h1>
        <p>基于 Ubuntu 22.04 + Docker + Nginx 反向代理部署成功。</p>
    </div>
</body>
</html>
EOF

# 2. 启动轻量容器并挂载静态目录
docker run -d \
  --name web-demo \
  --restart always \
  -p 127.0.0.1:8080:80 \
  -v /opt/web-demo/html:/usr/share/nginx/html:ro \
  nginx:alpine

执行完成后,可通过 curl -I http://127.0.0.1:8080 测试本地容器响应,返回 HTTP/1.1 200 OK 即表示容器运行正常。


四、 配置宿主机 Nginx 反向代理

接下来在宿主机安装 Nginx,负责监听公网 80 端口并将流量转发给内部的 Docker 容器。

1. 安装宿主机 Nginx

sudo apt install -y nginx
sudo systemctl enable --now nginx

2. 编写反向代理配置文件

新建一个站点配置文件 /etc/nginx/conf.d/web-demo.conf:

sudo tee /etc/nginx/conf.d/web-demo.conf << 'EOF'
server {
    listen 80;
    server_name _; # 如有已备案域名,可在此替换为实际域名

    # 访问日志与错误日志路径
    access_log /var/log/nginx/web_demo_access.log;
    error_log  /var/log/nginx/web_demo_error.log;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
EOF

3. 移除默认站点冲突并重载配置

Ubuntu 下的 Nginx 默认启用了 /etc/nginx/sites-enabled/default,可能会拦截 80 端口的默认请求。我们可以将其移除并重新加载 Nginx:

sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl reload nginx

当 sudo nginx -t 提示 syntax is ok 及 test is successful 时,配置即正式生效。


五、 常用排错与运维命令小结

在后续日常运维中,掌握以下几条命令可以快速定位服务状态:

  1. 查看容器实时运行状态与资源占用:
    docker stats --no-stream
    
  2. 查看容器最近 100 行日志:
    docker logs --tail 100 web-demo
    
  3. 排查端口监听情况:
    ss -tulpn | grep -E '80|8080'
    

总结

通过“宿主机 Nginx 统一网关 + 本地回环端口绑定 Docker 容器”的模式,我们不仅避免了将容器端口直接暴露在公网上的安全隐患,还能在单台华为云 ECS 实例上轻松扩展多个不同的业务站点。后续如需升级 HTTPS,只需在宿主机 Nginx 层统一配置 SSL 证书即可。

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

评论(0)

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

全部回复

上滑加载中

设置昵称

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

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

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