在阿里云服务器上使用 Nginx 部署多个 Web 项目,可以通过 配置多个 Server 块(server blocks) 来实现。每个 Server 块可以监听不同的域名或端口,将请求转发到对应的后端服务。
以下是详细的步骤和示例:
✅ 环境准备
- 已安装好 Nginx
- 多个 Web 应用(例如运行在不同端口的 Node.js、Java Spring Boot、Python Flask/Django 等)
- 每个项目监听不同的本地端口(如 3000、8080、5000)
🧩 示例场景
假设你有两个 Web 项目:
| 项目 | 端口 | 域名 |
|---|---|---|
| 项目A | 3000 | a.example.com |
| 项目B | 8080 | b.example.com |
🔧 步骤一:确保你的应用已运行并监听对应端口
例如:
node projectA/app.js # 监听 3000
java -jar projectB.jar # 监听 8080
你可以使用 curl localhost:3000 或 curl localhost:8080 测试是否正常响应。
🛠️ 步骤二:编辑 Nginx 配置文件
默认配置文件位置:
sudo nano /etc/nginx/conf.d/default.conf
或者新建两个独立的配置文件(推荐做法):
sudo nano /etc/nginx/conf.d/a.example.com.conf
sudo nano /etc/nginx/conf.d/b.example.com.conf
✅ 配置文件1:a.example.com
server {
listen 80;
server_name a.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
✅ 配置文件2:b.example.com
server {
listen 80;
server_name b.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
🔄 步骤三:检查配置 & 重启 Nginx
sudo nginx -t # 检查语法是否正确
sudo systemctl reload nginx # 重新加载配置
🌐 步骤四:配置域名解析(可选)
在 阿里云控制台 上添加 A 记录,将 a.example.com 和 b.example.com 解析到你的服务器公网 IP 地址。
🔒 可选:配置 HTTPS(SSL)
如果你希望启用 HTTPS,可以使用 Let’s Encrypt 免费证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d a.example.com -d b.example.com
Certbot 会自动修改 Nginx 配置,添加 SSL 支持。
📌 小贴士
- 使用
upstream模块管理负载均衡或多个后端实例。 - 可以使用一个域名 + 路径区分多个项目(如
/projectA和/projectB),通过location匹配路径。 - 日志文件位置一般为
/var/log/nginx/ - 使用
systemctl status nginx查看 Nginx 是否运行正常
🧪 示例:单域名多路径部署
server {
listen 80;
server_name example.com;
location /projectA/ {
proxy_pass http://localhost:3000/;
}
location /projectB/ {
proxy_pass http://localhost:8080/;
}
}
注意结尾斜杠
/的作用,用于去除前缀路径。
如果你有具体的应用类型(比如 Spring Boot、Vue、React、Django 等),我也可以提供更具体的配置建议!
需要我帮你写一个完整的配置模板吗?
CLOUD技术博