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

服务器

在阿里云服务器上部署多个 Web 项目,并通过 Nginx 进行反向X_X和域名管理,是一种非常常见且高效的方案。以下是详细的配置步骤和示例:


✅ 一、准备工作

  1. 购买并配置阿里云 ECS 实例

    • 系统推荐:Ubuntu 20.04 / CentOS 7+
    • 安装好 Nginx、Node.js(或 Java/Tomcat/Python 等后端环境)
    • 开放安全组端口:80 (HTTP)、443 (HTTPS)、22 (SSH)
  2. 多个 Web 项目运行在不同端口

    • 例如:
      • 项目A:http://localhost:3000
      • 项目B:http://localhost:5000
      • 项目C:http://localhost:8000
  3. 拥有多个域名或子域名

    • 如:www.site-a.comapi.site-b.comadmin.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 设置)

登录阿里云控制台:

  1. 进入 云解析 DNS
  2. 添加 A 记录,将域名指向你的 ECS 公网 IP:
    • www.site-a.com你的IP
    • admin.yourapp.com你的IP
    • static.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博客 » 阿里云服务器部署多个web项目配置nginx?