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

云计算

阿里云服务器部署多个Web项目的Nginx配置指南

结论:在阿里云服务器上使用Nginx部署多个Web项目,关键在于正确配置server块、合理设置监听端口/域名,并通过location指令实现请求分发。核心是通过虚拟主机技术实现多项目共存

一、基础环境准备

  • 安装Nginx

    sudo apt update
    sudo apt install nginx
  • 项目目录结构建议

    /var/www/
    ├── project1/      # 项目1目录
    │   └── public/    # 入口文件目录
    ├── project2/      # 项目2目录
    │   └── public/
    └── ...

二、多项目配置方案

方案1:基于不同端口的配置(适合测试环境)

# 项目1配置
server {
    listen 8080;
    server_name localhost;
    root /var/www/project1/public;
    index index.html index.php;

    # 其他配置...
}

# 项目2配置
server {
    listen 8081;
    server_name localhost;
    root /var/www/project2/public;
    index index.html index.php;
}

优点:配置简单,无需域名
缺点:需要记忆端口号,不专业

方案2:基于不同域名的配置(推荐生产环境)

# 项目1配置
server {
    listen 80;
    server_name www.project1.com project1.com;
    root /var/www/project1/public;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # PHP处理配置
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
}

# 项目2配置
server {
    listen 80;
    server_name www.project2.com project2.com;
    root /var/www/project2/public;

    # 其他类似配置...
}

关键点

  • 每个项目使用独立的server块
  • 通过server_name区分不同项目
  • root指向各项目的公开目录

三、高级配置技巧

  1. HTTPS配置(使用Let’s Encrypt免费证书):

    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d yourdomain.com
  2. 负载均衡配置(当单项目需要多实例时):

    upstream project1 {
       server 127.0.0.1:8000;
       server 127.0.0.1:8001;
    }
    
    server {
       location / {
           proxy_pass http://project1;
       }
    }
  3. 静态资源缓存优化

    location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
       expires 365d;
       add_header Cache-Control "public, no-transform";
    }

四、常见问题解决

  • 403 Forbidden错误

    • 检查目录权限:chmod -R 755 /var/www
    • 检查所有者:chown -R www-data:www-data /var/www
  • 502 Bad Gateway错误

    • 检查PHP-FPM是否运行:sudo systemctl status php7.4-fpm
    • 检查Nginx与PHP-FPM的sock文件路径是否匹配
  • 重定向循环问题

    • 检查HTTPS配置是否正确
    • 避免在应用和Nginx同时做重定向

五、最佳实践建议

  1. 每个项目使用独立配置文件

    • /etc/nginx/conf.d/下为每个项目创建单独的.conf文件
    • 主配置文件通过include指令引入
  2. 日志分离

    access_log /var/log/nginx/project1_access.log;
    error_log /var/log/nginx/project1_error.log;
  3. 安全加固

    • 禁用不必要的HTTP方法:limit_except GET POST { deny all; }
    • 隐藏Nginx版本号:server_tokens off;

最终建议:对于生产环境,始终使用域名区分项目+HTTPS加密的组合方案,这是最专业可靠的部署方式。配置完成后务必执行nginx -t测试配置,然后systemctl reload nginx平滑重载配置。

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