在阿里云轻量应用服务器(LightHouse)上部署多个项目,虽然它资源相对有限(如单公网 IP、默认单入口),但通过合理配置,完全可以实现多个项目的共存和访问。以下是几种常见的部署方案和步骤:
✅ 方案一:使用 Nginx 反向X_X + 多端口(推荐)
这是最常见且高效的方式,通过 Nginx 根据域名或路径将请求转发到不同后端服务。
步骤:
-
将多个项目部署在不同端口上
- 项目 A:运行在
localhost:3000 - 项目 B:运行在
localhost:4000 - 项目 C:运行在
localhost:5000
比如使用 Node.js、Python Flask、Spring Boot 等,启动时绑定不同端口。
- 项目 A:运行在
-
安装 Nginx
# Ubuntu/Debian sudo apt update sudo apt install nginx -y # CentOS sudo yum install nginx -y sudo systemctl start nginx sudo systemctl enable nginx -
配置 Nginx 虚拟主机(基于域名)
创建配置文件(例如
/etc/nginx/sites-available/project-a):server { listen 80; server_name a.yourdomain.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; } }同样创建
project-b:server { listen 80; server_name b.yourdomain.com; location / { proxy_pass http://127.0.0.1:4000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } -
启用站点
sudo ln -s /etc/nginx/sites-available/project-a /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/project-b /etc/nginx/sites-enabled/ -
测试并重启 Nginx
sudo nginx -t sudo systemctl reload nginx -
域名解析
- 将
a.yourdomain.com和b.yourdomain.com解析到轻量服务器的公网 IP。 - 在阿里云控制台的「轻量应用服务器」中,确保 80 端口已放行(在防火墙中配置)。
- 将
✅ 方案二:基于路径的路由(单域名多项目)
如果你只有一个域名,可以按路径区分项目:
server {
listen 80;
server_name yourdomain.com;
location /app1/ {
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /app2/ {
proxy_pass http://127.0.0.1:4000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
注意:后端项目需支持子路径(如静态资源路径处理)。
✅ 方案三:使用 Docker 部署(更灵活)
通过 Docker 容器隔离多个项目,再用 Nginx 反向X_X。
示例:
-
安装 Docker
curl -fsSL https://get.docker.com | bash -
编写
docker-compose.ymlversion: '3' services: app1: image: your-app1-image ports: - "3000:3000" restart: unless-stopped app2: image: your-app2-image ports: - "4000:4000" restart: unless-stopped nginx: image: nginx:alpine ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf depends_on: - app1 - app2 restart: unless-stopped -
配置 Nginx 指向
app1和app2容器名(Docker 内部网络)。
✅ 方案四:使用 PM2 管理多个 Node.js 项目
如果你部署的是多个 Node.js 项目:
npm install -g pm2
# 启动多个项目
pm2 start app1.js --name "project-a" -- -p 3000
pm2 start app2.js --name "project-b" -- -p 4000
pm2 save
pm2 startup
然后用 Nginx 反向X_X到这些端口。
⚠️ 注意事项
- 资源限制:轻量服务器配置较低(如 2GB 内存),避免部署过多高负载项目。
- 防火墙:在阿里云控制台的「防火墙」中开放 80、443 等端口。
- HTTPS:使用 Let’s Encrypt + Certbot 配置 SSL:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d a.yourdomain.com -d b.yourdomain.com - 避免端口冲突:确保每个服务监听不同端口。
✅ 总结
| 方案 | 适用场景 |
|---|---|
| Nginx 反向X_X(域名) | 多个独立网站,推荐 |
| Nginx 路径路由 | 单域名下多个子应用 |
| Docker + Nginx | 项目隔离、便于管理 |
| PM2 + Nginx | 多个 Node.js 应用 |
如果你提供具体项目类型(如 Vue、React、Spring Boot、Django 等),我可以给出更详细的部署命令和配置示例。欢迎继续提问!
秒懂云