在腾讯云服务器上配置多个 Web 系统是完全可行的,常见的做法包括使用虚拟主机、反向、Docker 容器化等方式来实现。以下是详细的配置思路和步骤:
一、前提条件
- 一台腾讯云 CVM(云服务器)
- 已安装操作系统(如 CentOS、Ubuntu 等)
- 域名(可选,用于绑定不同系统)
- 公网 IP 或已备案的域名
二、实现方式
方式 1:使用 Nginx 反向 + 多端口(推荐)
适用场景:多个 Web 应用运行在不同端口,通过 Nginx 统一入口转发。
步骤:
-
部署多个 Web 应用
- 例如:
- Web系统A:运行在
http://localhost:3000(Node.js) - Web系统B:运行在
http://localhost:8080(Java/Spring Boot) - Web系统C:运行在
http://localhost:5000(Python Flask)
- Web系统A:运行在
- 例如:
-
安装 Nginx
# Ubuntu/Debian sudo apt update sudo apt install nginx # CentOS/RHEL sudo yum install nginx sudo systemctl start nginx sudo systemctl enable nginx -
配置 Nginx 虚拟主机(server 块)
编辑配置文件(如
/etc/nginx/sites-available/default或新建文件):server { listen 80; server_name system-a.example.com; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; server_name system-b.example.com; 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; } } server { listen 80; server_name system-c.example.com; location / { proxy_pass http://127.0.0.1:5000; } } -
绑定域名(可选)
- 在域名服务商处将
system-a.example.com、system-b.example.com解析到服务器公网 IP。
- 在域名服务商处将
-
重启 Nginx
sudo nginx -t # 测试配置 sudo systemctl reload nginx
✅ 优点:统一入口、安全、支持 HTTPS、负载均衡扩展性强
❌ 缺点:需要维护 Nginx 配置
方式 2:基于端口直接访问(简单粗暴)
适用场景:测试环境或内部使用,不依赖域名。
- 直接通过
公网IP:端口访问:http://your-ip:3000→ 系统Ahttp://your-ip:8080→ 系统Bhttp://your-ip:5000→ 系统C
注意:
- 在腾讯云控制台【安全组】中开放对应端口(如 3000、8080、5000)
- 防火墙(firewalld/ufw)也要放行
方式 3:使用 Docker 容器隔离(高级推荐)
优势:环境隔离、易于部署、可扩展
示例:
# 启动多个容器,映射不同端口
docker run -d -p 3000:3000 --name web-a my-node-app
docker run -d -p 8080:8080 --name web-b my-spring-app
docker run -d -p 5000:5000 --name web-c my-flask-app
然后配合 Nginx 做反向,实现域名访问。
或者使用 docker-compose.yml 统一管理:
version: '3'
services:
web-a:
image: my-node-app
ports:
- "3000:3000"
web-b:
image: my-spring-app
ports:
- "8080:8080"
nginx:
image: nginx
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- web-a
- web-b
方式 4:Apache 虚拟主机(传统方式)
如果你习惯使用 Apache:
<VirtualHost *:80>
ServerName system-a.example.com
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
<VirtualHost *:80>
ServerName system-b.example.com
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
三、安全建议
-
安全组配置:
- 仅开放必要的端口(如 80、443、22)
- 避免开放 3000、8080 等应用端口给公网(用 Nginx 后,内部通信即可)
-
HTTPS:
- 使用 Let’s Encrypt 免费证书 + Nginx 配置 SSL
- 推荐使用 Certbot
-
防火墙:
- 启用
ufw(Ubuntu)或firewalld(CentOS)
- 启用
四、总结
| 方式 | 适用场景 | 推荐度 |
|---|---|---|
| Nginx 反向 + 域名 | 生产环境,多系统共存 | ⭐⭐⭐⭐⭐ |
| 直接端口访问 | 测试/开发环境 | ⭐⭐ |
| Docker + Nginx | 微服务、容器化部署 | ⭐⭐⭐⭐⭐ |
| Apache 虚拟主机 | 传统项目迁移 | ⭐⭐⭐ |
五、腾讯云相关服务推荐
- 负载均衡 CLB:多个服务器负载分发
- 云解析 DNS:管理多个子域名
- SSL 证书服务:免费申请 HTTPS 证书
- 容器服务 TKE:大规模部署多个 Web 系统
如需具体某一种 Web 系统(如 WordPress、Node.js、Spring Boot)的部署示例,可以继续提问!
ECLOUD博客