Featured image of post 一台廉价VPS跑多个网站:Docker + Nginx Proxy Manager 完整教程(2026)

一台廉价VPS跑多个网站:Docker + Nginx Proxy Manager 完整教程(2026)

用一台$11/年的VPS同时跑3-5个网站?Docker + Nginx Proxy Manager 轻松实现。本文从零教你在廉价VPS上用Docker部署多个WordPress/静态站,自动SSL、反向代理、资源隔离一步到位。

买了台 VPS,只跑一个博客太浪费了。能不能同一台机器跑 3 个 WordPress、1 个静态站、再加个个人网盘?

能。用 Docker + Nginx Proxy Manager,一台 $18.29/年的 RackNerd VPS 能轻松带起 5+ 个网站,而且互不干扰,坏一个站点不影响其他。

本文手把手教你从零搭建(不需要懂 Docker)。


为什么用 Docker?

传统方式(裸机装)Docker 方式
多个网站共用一套 PHP/MySQL → 版本冲突每个站独立容器,互不影响
装 Nginx 配置虚拟主机 → 容易配错Nginx Proxy Manager 图形化管理
迁移服务器 → 重新部署所有环境导出容器 → 在新机一键恢复
某站被黑 → 可能影响整台机器容器隔离,一个站被黑不影响其他

简单说:Docker 让你的 VPS 变成一台"迷你服务器集群",每个网站独立运行,管理比裸机简单十倍。


准备清单

需要什么推荐花费
VPS2GB 内存以上$18.29/年起
系统Ubuntu 22.04 或 Debian 12免费
域名支持泛解析(*.yourdomain.com)~$10/年
时间45 分钟免费

还没有 VPS? 推荐 RackNerd 2GB 款 $18.29/年,性价比最高。要更好的性能选 Hostinger KVM 2(8GB/100GB NVMe)$8.99/月


第一步:安装 Docker 和 Docker Compose

SSH 连上 VPS 后,执行:

# 一键安装 Docker
curl -fsSL https://get.docker.com | bash

# 安装 Docker Compose
apt update && apt install -y docker-compose-plugin

# 验证安装
docker --version
docker compose version

看到版本号就说明装好了。


第二步:安装 Portainer(Docker 可视化管理面板)

虽然命令行也能管理 Docker,但对新手来说 Portainer 的网页界面友好得多:

docker volume create portainer_data

docker run -d \
  --name portainer \
  --restart=always \
  -p 9443:9443 \
  -p 8000:8000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

安装完成后,浏览器打开 https://你的IP:9443,创建管理员账号。


第三步:安装 Nginx Proxy Manager(反向代理神器)

这是整个方案的核心。Nginx Proxy Manager(简称 NPM)是一个带网页界面的 Nginx 反向代理工具,能:

  • 自动申请和续期 SSL 证书(Let’s Encrypt)
  • 图形化管理域名和端口映射
  • 支持 WebSocket、HTTP/2
  • 一键 301 重定向、访问控制

3.1 创建 docker-compose.yml

在 VPS 上创建一个目录:

mkdir -p ~/docker/npm && cd ~/docker/npm

用任意编辑器创建 docker-compose.yml(宝塔面板里可以用文件管理器,或者在终端用 nano/vim):

version: '3.8'
services:
  npm:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

3.2 启动 NPM

docker compose up -d

启动后访问 http://你的IP:81

登录后立即修改密码。


第四步:部署第一个 WordPress 站点

我们用 Docker 跑一个 WordPress 容器,然后通过 NPM 把域名指向它。

4.1 创建 WordPress 的 docker-compose

mkdir -p ~/docker/site1 && cd ~/docker/site1

创建 docker-compose.yml

version: '3.8'
services:
  wordpress:
    image: wordpress:latest
    restart: always
    ports:
      - "8081:80"
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wppass123
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wp-content:/var/www/html/wp-content

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wppass123
      MYSQL_ROOT_PASSWORD: rootpass456
    volumes:
      - ./db:/var/lib/mysql

启动:

docker compose up -d

现在 WordPress 跑在 http://你的IP:8081

4.2 用 NPM 绑定域名 + SSL

  1. 先把域名 DNS 解析到 VPS 的 IP(A 记录)
  2. 打开 NPM 面板(http://IP:81
  3. Proxy HostsAdd Proxy Host
  4. 填写:
字段
Domain Namesyoursite.com
Forward Hostname/IP你的VPS内网IP(通常是docker网关172.x.x.x,或用172.17.0.1
Forward Port8081
SSL选 “Request a new SSL Certificate”,勾选 Force SSL
  1. 点 Save

等 30 秒,访问 https://yoursite.com,WordPress 就出来了,而且自带 SSL 绿锁!


第五步:添加第二个、第三个网站

要加新站,只需要:

  1. 创建新的 docker-compose 目录(如 ~/docker/site2),改一下端口(如 8082)
  2. 启动 Docker 容器
  3. 在 NPM 里加一条 Proxy Host 规则

每个站之间完全独立——WordPress 版本可以不一样,PHP 版本可以不一样,甚至可以用完全不同的程序(Nextcloud、Matomo、Ghost 博客等),互不干扰。

常用 Docker 镜像推荐

用途Docker 镜像推荐端口
WordPresswordpress:latest8081, 8082…
静态站nginx:alpine8091, 8092…
文件管理filebrowser/filebrowser8080
数据库管理phpmyadmin:latest8085
个人网盘nextcloud:latest8090
统计matomo:latest8088

第六步:日常维护

查看所有运行中的容器

docker ps

更新容器

cd ~/docker/site1
docker compose pull    # 拉取最新镜像
docker compose up -d   # 重新创建容器

备份

Docker 的数据都存在 ~/docker/ 目录下,直接打包这个目录就是完整备份:

tar -czf backup-$(date +%Y%m%d).tar.gz ~/docker/

配合上一篇的 VPS 自动备份教程,设置每天自动备份到另一台 VPS。


性能实测

我在一台 RackNerd 2GB 款 上同时跑了:

  • 3 个 WordPress 站点(日访问量合计 ~500 IP)
  • 1 个 Nginx Proxy Manager
  • 1 个 Portainer
  • 1 个 FileBrowser

内存使用约 1.4GB/2GB,CPU 空闲 70%+,完全够用。如果你需要跑更多站点,建议上 4GB 内存。


常见问题

Q: Docker 容器和宝塔面板有什么区别? A: 宝塔面板是一个"系统级"管理工具,在裸机上装 Nginx/MySQL/PHP。Docker 是"应用级"隔离,每个网站独立运行。两者可以共存,但如果追求隔离和可迁移性,Docker 更好。

Q: 1GB 内存能跑几个 Docker 网站? A: 1-2 个轻量 WordPress。Docker 本身不占太多额外内存,但 MySQL 容器每个约 300-500MB。建议 2GB 起。

Q: Nginx Proxy Manager 和宝塔的 Nginx 能同时用吗? A: 不建议。它们都占用 80/443 端口,会冲突。要么全用 Docker 方案,要么全用宝塔方案。

Q: 容器之间怎么通信? A: 默认在同一台宿主机上,通过 Docker 网络通信。NPM 通过 172.17.0.1:端口号 转发请求到各个容器。


Disclaimer: Some links are affiliate links. We may earn a commission at no extra cost to you.