在阿里云服务器上部署多个 Web 项目,并通过 Nginx 进行反向X_X和域名管理,是一种非常常见且高效的方案。以下是详细的配置步骤和示例:
✅ 一、准备工作
-
购买并配置阿里云 ECS 实例
- 系统推荐:Ubuntu 20.04 / CentOS 7+
- 安装好 Nginx、Node.js(或 Java/Tomcat/Python 等后端环境)
- 开放安全组端口:80 (HTTP)、443 (HTTPS)、22 (SSH)
-
多个 Web 项目运行在不同端口
- 例如:
- 项目A:
http://localhost:3000 - 项目B:
http://localhost:5000 - 项目C:
http://localhost:8000
- 项目A:
- 例如:
-
拥有多个域名或子域名
- 如:
www.site-a.com、api.site-b.com、admin.yourapp.com
- 如:
✅ 二、安装 Nginx(以 Ubuntu 为例)
sudo apt update
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx
检查是否正常访问:浏览器打开 http://你的公网IP,看到 Nginx 欢迎页即成功。
✅ 三、配置多个 Web 项目(使用反向X_X)
方法:为每个项目创建独立的 Nginx 配置文件
所有站点配置建议放在
/etc/nginx/sites-available/目录下,并通过软链接启用到sites-enabled/
示例 1:配置第一个项目(www.site-a.com → 本地 3000 端口)
sudo nano /etc/nginx/sites-available/site-a
内容如下:
server {
listen 80;
server_name www.site-a.com site-a.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
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_cache_bypass $http_upgrade;
}
}
示例 2:配置第二个项目(admin.yourapp.com → 本地 5000 端口)
sudo nano /etc/nginx/sites-available/admin-app
server {
listen 80;
server_name admin.yourapp.com;
location / {
proxy_pass http://127.0.0.1:5000;
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;
}
}
示例 3:静态网站(如 Vue/React 打包后的前端)
sudo nano /etc/nginx/sites-available/frontend-static
server {
listen 80;
server_name static.yoursite.com;
root /var/www/static-frontend;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
# 可选:设置缓存
location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
✅ 四、启用站点配置
# 创建软链接到 sites-enabled
sudo ln -s /etc/nginx/sites-available/site-a /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/admin-app /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/frontend-static /etc/nginx/sites-enabled/
# 删除默认站点(可选)
sudo rm /etc/nginx/sites-enabled/default
✅ 五、测试并重载 Nginx
# 测试配置是否正确
sudo nginx -t
# 重新加载配置
sudo systemctl reload nginx
✅ 六、域名解析(DNS 设置)
登录阿里云控制台:
- 进入 云解析 DNS
- 添加 A 记录,将域名指向你的 ECS 公网 IP:
www.site-a.com→你的IPadmin.yourapp.com→你的IPstatic.yoursite.com→你的IP
等待生效(通常几分钟)。
✅ 七、(可选)配置 HTTPS(使用 Let’s Encrypt)
使用 Certbot 自动申请免费 SSL 证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d www.site-a.com -d admin.yourapp.com
Certbot 会自动修改 Nginx 配置,启用 HTTPS 并设置自动续期。
✅ 八、启动你的多个 Web 项目(后台运行)
确保每个项目都在监听对应端口,例如使用 PM2 管理 Node.js 应用:
npm install -g pm2
# 启动项目A
cd /path/to/project-a
pm2 start app.js --name "site-a" -- -p 3000
# 启动项目B
cd /path/to/project-b
pm2 start server.js --name "admin-app" -- -p 5000
# 保存进程
pm2 save
pm2 startup # 开机自启
✅ 总结:结构图
用户请求
↓
Nginx(80/443)
├── www.site-a.com → 127.0.0.1:3000
├── admin.yourapp.com → 127.0.0.1:5000
└── static.yoursite.com → /var/www/static-frontend (静态文件)
✅ 常见问题排查
- 502 Bad Gateway:检查后端服务是否运行、端口是否开放。
- 404 Not Found:检查
root路径或proxy_pass是否正确。 - 无法访问:检查阿里云安全组是否放行 80/443 端口。
- 证书未生效:使用
https://测试,检查 Certbot 日志。
如有具体项目类型(Vue、React、Spring Boot、Django 等),可以提供更详细的配置建议。欢迎继续提问!
CDNK博客