在阿里云服务器上使用Nginx部署多个Web项目,可以通过配置多个server块(虚拟主机)或基于路径的反向X_X来实现。以下是具体步骤和配置示例:
方法1:基于域名的虚拟主机(推荐)
适用场景:每个项目有独立域名(如 project1.com 和 project2.com)。
步骤
-
域名解析
将域名解析到阿里云服务器的公网IP(在域名服务商处添加A记录)。 -
Nginx配置
在/etc/nginx/conf.d/下为每个项目创建独立的配置文件(如project1.conf和project2.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; } } -
重启Nginx
sudo nginx -t # 测试配置是否正确 sudo systemctl restart nginx
方法2:基于路径的反向X_X
适用场景:单域名通过不同路径访问不同项目(如 example.com/project1 和 example.com/project2)。
步骤
-
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; } } -
重启Nginx
sudo nginx -t && sudo systemctl restart nginx
方法3:基于端口的区分
适用场景:无域名,通过不同端口访问(如 IP:8001 和 IP:8002)。
步骤
-
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; } -
开放防火墙端口
在阿里云安全组中放行8001和8002端口。
通用注意事项
-
静态项目
- 确保项目文件路径正确,权限设为
755(目录)和644(文件)。 - 使用
root或alias指定目录(注意两者区别:root会拼接路径,alias直接替换)。
- 确保项目文件路径正确,权限设为
-
动态项目(如Node.js/Python)
- 使用
proxy_pass转发到本地服务端口(如http://localhost:3000)。 - 建议用PM2等工具守护进程。
- 使用
-
HTTPS配置
使用 Certbot 申请免费SSL证书:sudo certbot --nginx -d project1.com -d project2.com -
日志分离
为每个项目配置独立的访问日志:server { access_log /var/log/nginx/project1_access.log; error_log /var/log/nginx/project1_error.log; }
常见问题排查
- 权限问题:确保Nginx用户(通常为
www-data或nginx)有项目目录的读取权限。 - 配置冲突:检查是否有重复的
server_name或端口。 - 缓存问题:修改配置后重启Nginx,或使用
nginx -s reload热加载。
通过以上方法,可以灵活部署多个Web项目。根据实际需求选择最适合的方案即可!
云服务器