奋斗
努力

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

云计算

在阿里云服务器上使用Nginx部署多个Web项目,可以通过配置多个server块(虚拟主机)或基于路径的反向X_X来实现。以下是具体步骤和配置示例:


方法1:基于域名的虚拟主机(推荐)

适用场景:每个项目有独立域名(如 project1.comproject2.com)。

步骤

  1. 域名解析
    将域名解析到阿里云服务器的公网IP(在域名服务商处添加A记录)。

  2. Nginx配置
    /etc/nginx/conf.d/ 下为每个项目创建独立的配置文件(如 project1.confproject2.conf)。

    # project1.conf
    server {
       listen 80;
       server_name project1.com www.project1.com;  # 替换为实际域名
       root /var/www/project1;                     # 项目1的静态文件目录
       index index.html;
    
       location / {
           try_files $uri $uri/ =404;
       }
    }
    # project2.conf
    server {
       listen 80;
       server_name project2.com www.project2.com;  # 替换为实际域名
       root /var/www/project2;                     # 项目2的静态文件目录
       index index.html;
    
       location / {
           try_files $uri $uri/ =404;
       }
    }
  3. 重启Nginx

    sudo nginx -t   # 测试配置是否正确
    sudo systemctl restart nginx

方法2:基于路径的反向X_X

适用场景:单域名通过不同路径访问不同项目(如 example.com/project1example.com/project2)。

步骤

  1. Nginx配置
    修改默认配置文件(如 /etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf):

    server {
       listen 80;
       server_name example.com;  # 替换为实际域名或IP
    
       # 项目1的配置
       location /project1 {
           alias /var/www/project1;  # 注意使用alias而非root
           index index.html;
           try_files $uri $uri/ =404;
       }
    
       # 项目2的配置(如果是动态应用,如Node.js/Python)
       location /project2 {
           proxy_pass http://localhost:3000;  # X_X到本地3000端口
           proxy_set_header Host $host;
           proxy_set_header X-Real-IP $remote_addr;
       }
    }
  2. 重启Nginx

    sudo nginx -t && sudo systemctl restart nginx

方法3:基于端口的区分

适用场景:无域名,通过不同端口访问(如 IP:8001IP:8002)。

步骤

  1. Nginx配置

    server {
       listen 8001;
       server_name _;
       root /var/www/project1;
       index index.html;
    }
    
    server {
       listen 8002;
       server_name _;
       root /var/www/project2;
       index index.html;
    }
  2. 开放防火墙端口
    在阿里云安全组中放行 80018002 端口。


通用注意事项

  1. 静态项目

    • 确保项目文件路径正确,权限设为 755(目录)和 644(文件)。
    • 使用 rootalias 指定目录(注意两者区别:root 会拼接路径,alias 直接替换)。
  2. 动态项目(如Node.js/Python)

    • 使用 proxy_pass 转发到本地服务端口(如 http://localhost:3000)。
    • 建议用PM2等工具守护进程。
  3. HTTPS配置
    使用 Certbot 申请免费SSL证书:

    sudo certbot --nginx -d project1.com -d project2.com
  4. 日志分离
    为每个项目配置独立的访问日志:

    server {
       access_log /var/log/nginx/project1_access.log;
       error_log /var/log/nginx/project1_error.log;
    }

常见问题排查

  • 权限问题:确保Nginx用户(通常为 www-datanginx)有项目目录的读取权限。
  • 配置冲突:检查是否有重复的 server_name 或端口。
  • 缓存问题:修改配置后重启Nginx,或使用 nginx -s reload 热加载。

通过以上方法,可以灵活部署多个Web项目。根据实际需求选择最适合的方案即可!

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