腾讯云国际代理商:CVM 实操 Ubuntu22.04 Docker 一键部署可公网访问 HTTPS 海外 Web 服务
一、为什么选择腾讯云国际云服务器承载海外 Web 业务
面向海外用户的官网、独立站、API 服务、轻量 SaaS,核心诉求集中在网络、弹性、安全、运维四大维度,对比说明如下:
| 落地方案 | 海外访问延迟 | 弹性扩容能力 | 自定义环境权限 | 安全防护体系 | 长期运维成本 | 适配企业规模 |
| 海外虚拟主机 | 中等,共享带宽 | 无法自定义扩容容器 | 受限,禁止底层 Docker | 仅基础 WAF,无自主防火墙 | 基准 100% | 个人小型展示站,无复杂业务 |
| 自建海外裸机 | 低 | 无弹性,硬件固定 | 完全自主 | 需自行搭建防火墙、快照 | 基准 140%,专职运维人力成本高 | 大型自研团队,有专职运维 |
| 腾讯云国际 CVM | 低,全球多地域就近节点 | 一键升降配、弹性带宽、CBS 扩容 | 完整 root 权限,支持 Docker/K8s | 安全组 + UFW 双层防护、自动快照、密钥登录 | 基准 60%-75% | 跨境电商、海外 SaaS、企业官网、初创技术团队 |
腾讯云国际覆盖东南亚、欧洲、美洲多地域节点,适合搭建:
- 海外企业官网、品牌展示独立站
- WordPress、Shopify 镜像类 CMS 站点
- 前后端分离海外 API 服务
- Docker 容器化业务、轻量微服务节点
- 海外产品测试环境、中转后台
二、落地场景目标
在腾讯云国际 CVM(Ubuntu 22.04)部署 Docker Nginx 站点,宿主机 Nginx 反向代理容器服务,全站强制 HTTPS,公网可稳定访问,分层隔离保障安全,后续支持多站点、多容器无缝扩展。 前置条件:域名已完成 A 记录解析至 CVM 公网 IP。
三、基础环境清单
云平台:腾讯云国际
实例产品:CVM 云服务器
操作系统:Ubuntu Server 22.04 LTS
容器:Docker Engine + Docker Compose Plugin
反向代理:宿主机原生 Nginx SSL
证书:Certbot Let’s Encrypt 免费证书
四、步骤 1 创建 CVM 实例,配置安全组最小权限放行
1.1 实例规格选型
轻量官网、后台、API 测试:1 核 2G 基础实例; 高并发独立站、多用户 SaaS:2 核 4G 及以上规格,支持后期一键升降配,搭配 CBS 弹性磁盘扩容存储。
1.2 系统选型
优先 Ubuntu 22.04 LTS:社区文档完善、Docker/Certbot 兼容稳定、5 年长期安全补丁支持,适合生产环境。
1.3 安全组仅放行必要端口(最小权限原则)
仅开放入站 TCP 端口: 22 SSH 远程登录、80 HTTP、443 HTTPS; 业务 3000/8080 等开发端口仅临时放行,正式环境禁止对公网暴露,全部由 Nginx 反向代理转发。
五、步骤 2 SSH 登录服务器,系统初始化加固
ubuntu@服务器公网IP
2.1 系统更新,卸载冲突旧版 Docker
sudo apt update && sudo apt upgrade -y# 卸载系统自带旧版docker.io,避免官方Docker安装冲突sudo apt remove $(dpkg –get-selections docker.io docker-compose docker-compose-v2 podman-docker containerd runc | cut -f1) -ysudo apt install -y curl wget git vim ufw ca-certificates gnupg lsb-release
2.2 设置时区
海外业务面向欧美:UTC 时区;面向东南亚可设置 Asia/Singapore
sudo timedatectl set-timezone UTC
timedatectl# 东南亚时区可选 sudo timedatectl set-timezone Asia/Singapore
2.3 创建运维专用用户,弱化 root 直接操作
sudo adduser deploysudo usermod -aG sudo deploy
2.4 配置 SSH 密钥登录,关闭密码登录(生产安全必备)
本地电脑生成 ed25519 密钥
ssh-keygen -t ed25519 -C “admin@example.com”
上传公钥至服务器 deploy 用户
ssh-copy-id deploy@服务器公网IP
登录验证密钥可用后,编辑 sshd_config 关闭密码登录、限制 root 远程登录
sudo vim /etc/ssh/sshd_config# 修改配置 PasswordAuthentication no、PermitRootLogin nosudo systemctl reload sshd
六、步骤 3 双层防火墙安全配置(云安全组 + 本地 UFW)
云安全组管控公网入口,UFW 做主机内部二次拦截,双重防护。
sudo ufw allow OpenSSHsudo ufw allow 80/tcpsudo ufw allow 443/tcpsudo ufw enablesudo ufw status
七、步骤 4 安装官方稳定版 Docker + Compose Plugin
7.1 添加 Docker 官方 GPG 密钥与软件源
sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpgecho “deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo “$VERSION_CODENAME”) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
7.2 安装全套 Docker 组件
sudo apt updatesudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
7.3 验证安装,免 sudo 操作 Docker
docker –versiondocker compose versionsudo systemctl status docker# 将当前用户加入docker组,无需sudo执行docker命令sudo usermod -aG docker $USER
newgrp docker# 测试容器docker run –rm hello-world
八、步骤 5 Docker Compose 部署业务 Web 容器
容器仅绑定本地 127.0.0.1 端口,禁止直接暴露公网,规避容器漏洞攻击。
8.1 创建项目目录与首页文件
mkdir -p ~/webapp/htmlcd ~/webappcat > ~/webapp/html/index.html <<‘EOF’
<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”UTF-8″>
<meta name=”viewport” content=”width=device-width, initial-scale=1.0″>
<title>Tencent Cloud International CVM Demo Site</title>
</head>
<body>
<h1>Web Service Running on Tencent Cloud International CVM</h1>
<p>Docker + Nginx Reverse Proxy Production Deployment Completed</p>
</body>
</html>
EOF
8.2 编写 compose.yaml,容器仅绑定本地 8080 端口
yaml
services:
web:
image: nginx:stable
container_name: web
restart: unless-stopped
volumes:
– ./html:/usr/share/nginx/html:ro
ports:
– “127.0.0.1:8080:80”
networks:
– app_netnetworks:
app_net:
driver: bridge
8.3 启动容器服务
docker compose up -ddocker compose ps
九、步骤 6 宿主机 Nginx 反向代理配置(修复原教程缺失 HTTPS 强制跳转)
9.1 安装并启动 Nginx
sudo apt install -y nginxsudo systemctl enable nginxsudo systemctl start nginxsudo systemctl status nginx
9.2 创建站点配置文件
sudo vim /etc/nginx/sites-available/example.com
完整配置(新增 HTTP 强制 301 跳转 HTTPS、TLS 安全协议)
nginx
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
# 全部HTTP请求跳转HTTPS
return 301 https://$host$request_uri;}server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com www.example.com;
client_max_body_size 20m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
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;
proxy_set_header Connection “”;
}}
9.3 启用站点配置,校验 Nginx 语法重载
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/sudo nginx -tsudo systemctl reload nginx
十、步骤 7 Certbot 一键申请 HTTPS 证书,自动续期
10.1 安装 Certbot Nginx 插件
sudo apt install -y certbot python3-certbot-nginx
10.2 自动申请证书并写入 Nginx 配置
sudo certbot –nginx -d example.com -d www.example.com –email admin@example.com –agree-tos –no-eff-email
10.3 校验自动续期定时任务(Ubuntu22.04 自动创建 systemd timer)
systemctl list-timers | grep certbotsudo systemctl status certbot.timer# 模拟续期测试,确保无报错sudo certbot renew –dry-run# 查看证书有效期sudo certbot certificates
