在阿里云服务器上使用 Nginx 部署多个 Web 项目,主要是通过配置 Nginx 的 server 块(虚拟主机) 来实现。你可以根据不同的域名或端口来区分不同的项目。
下面是一个完整的步骤指南:
🧩 准备工作
-
已经安装好 Nginx
- 如果未安装,可以使用以下命令安装(以 CentOS 为例):
sudo yum install nginx - Ubuntu 安装:
sudo apt update sudo apt install nginx
- 如果未安装,可以使用以下命令安装(以 CentOS 为例):
-
确保你的多个 Web 应用已经在服务器运行(如:Node.js、Java Spring Boot、Python Flask/Django 等),并且监听在不同的端口上(如
3000,8080,5000等)。 -
有多个域名或子域名指向该服务器 IP(或者你也可以用不同端口访问)。
🛠️ 配置 Nginx 多个站点
✅ 方法一:基于不同域名部署多个项目(推荐)
示例结构:
| 域名 | 对应本地服务端口 |
|---|---|
| www.project1.com | 3000 |
| www.project2.com | 8080 |
修改 Nginx 配置文件:
sudo vi /etc/nginx/conf.d/project1.conf
添加如下内容:
server {
listen 80;
server_name www.project1.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;
}
}
再创建另一个配置文件:
sudo vi /etc/nginx/conf.d/project2.conf
server {
listen 80;
server_name www.project2.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;
}
}
检查并重启 Nginx:
sudo nginx -t # 检查语法是否正确
sudo systemctl reload nginx # 重载配置
✅ 方法二:基于路径映射(一个域名下多个项目)
适用于只有一个域名的情况。
比如:
- 主站:
www.example.com - 子项目 A:
www.example.com/app1 - 子项目 B:
www.example.com/app2
配置如下:
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://127.0.0.1:3000; # 默认主站
}
location /app1/ {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
}
location /app2/ {
proxy_pass http://127.0.0.1:5000/;
proxy_set_header Host $host;
}
}
注意结尾的
/,会影响X_X路径拼接方式。
✅ 方法三:基于不同端口访问多个项目(不常用)
如果你没有多个域名,也可以直接使用不同端口访问 Nginx,再转发到对应服务:
server {
listen 8081;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
server {
listen 8082;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
然后在浏览器中访问:
http://your_server_ip:8081http://your_server_ip:8082
别忘了开放阿里云安全组中的这些端口!
🔐 补充:HTTPS 配置(可选)
如果你为每个网站申请了 SSL 证书(如从阿里云获取的免费证书),可以在每个 server 块中启用 HTTPS:
server {
listen 443 ssl;
server_name www.project1.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
同时建议配置 HTTP 到 HTTPS 强制跳转:
server {
listen 80;
server_name www.project1.com;
return 301 https://$host$request_uri;
}
🧪 测试方法
-
在本地 hosts 文件中模拟域名解析(开发测试阶段可用):
192.168.x.x www.project1.com 192.168.x.x www.project2.com -
使用浏览器访问对应的域名或端口进行测试。
📌 小贴士
- 所有配置文件都放在
/etc/nginx/conf.d/目录下更便于管理。 - 使用
nginx -t和systemctl reload nginx是修改配置后的标准操作。 - 阿里云服务器需要在【安全组】中放行相应端口(如 80、443、3000 等)。
如果你告诉我你的具体项目类型(如 Node.js、Spring Boot)、使用的端口、是否有域名等信息,我可以给你定制一份完整的 Nginx 配置示例。
云计算导航