阿里云服务器部署多个web项目配置nginx?

在阿里云服务器上使用 Nginx 部署多个 Web 项目,主要是通过配置 Nginx 的 server 块(虚拟主机) 来实现。你可以根据不同的域名或端口来区分不同的项目。

下面是一个完整的步骤指南:


🧩 准备工作

  1. 已经安装好 Nginx

    • 如果未安装,可以使用以下命令安装(以 CentOS 为例):
      sudo yum install nginx
    • Ubuntu 安装:
      sudo apt update
      sudo apt install nginx
  2. 确保你的多个 Web 应用已经在服务器运行(如:Node.js、Java Spring Boot、Python Flask/Django 等),并且监听在不同的端口上(如 3000, 8080, 5000 等)。

  3. 有多个域名或子域名指向该服务器 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:8081
  • http://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;
}

🧪 测试方法

  1. 在本地 hosts 文件中模拟域名解析(开发测试阶段可用):

    192.168.x.x www.project1.com
    192.168.x.x www.project2.com
  2. 使用浏览器访问对应的域名或端口进行测试。


📌 小贴士

  • 所有配置文件都放在 /etc/nginx/conf.d/ 目录下更便于管理。
  • 使用 nginx -t 和 systemctl reload nginx 是修改配置后的标准操作。
  • 阿里云服务器需要在【安全组】中放行相应端口(如 80、443、3000 等)。

如果你告诉我你的具体项目类型(如 Node.js、Spring Boot)、使用的端口、是否有域名等信息,我可以给你定制一份完整的 Nginx 配置示例。

未经允许不得转载:云计算导航 » 阿里云服务器部署多个web项目配置nginx?