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

在阿里云服务器上使用 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:3000curl 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.comb.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技术博 » 阿里云服务器部署多个web项目配置nginx?