Angular+NestJS部署AWS EC2遇Nginx内部错误,求部署指导与排查
AWS EC2 部署 Angular + NestJS 完整指南&问题排查
一、先解决你的Nginx内部服务器错误问题
出现500错误大概率是权限、路径或配置语法问题,按以下步骤排查:
- 检查文件路径与存在性:确认
/home/ubuntu/E-learn/backend/dist/frontend目录下确实有index.html文件,构建脚本执行是否完全成功,没有中途报错。 - 修复目录权限:Nginx默认以
www-data用户运行,给前端产物目录赋予正确权限:sudo chown -R www-data:www-data /home/ubuntu/E-learn/backend/dist/frontend sudo chmod -R 755 /home/ubuntu/E-learn/backend/dist/frontend - 验证Nginx配置语法:执行命令检查配置是否有语法错误:
如果提示错误,根据提示修正配置文件(比如路径拼写错误、括号不匹配)。sudo nginx -t - 查看错误日志定位根源:查看Nginx错误日志获取具体错误信息:
日志会明确告诉你是文件找不到、权限不足还是其他问题,针对性修复即可。sudo cat /var/log/nginx/error.log
二、AWS EC2 完整部署步骤(Ubuntu系统为例)
1. 环境初始化
- 更新系统并安装依赖:
sudo apt update && sudo apt upgrade -y sudo apt install nginx -y curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs sudo npm install -g pm2 - 启动并启用Nginx、配置PM2开机自启:
sudo systemctl start nginx sudo systemctl enable nginx pm2 startup ubuntu -u ubuntu --hp /home/ubuntu
2. 项目构建
- 克隆项目到EC2实例:
git clone <你的项目仓库地址> cd E-learn/backend - 安装前后端依赖并执行构建:
确认后端npm install cd ../frontend && npm install && cd ../backend npm run build:proddist目录下生成了NestJS产物(通常是main.js所在目录)和frontend子目录(Angular构建产物)。
3. 启动NestJS后端
用PM2管理后端进程,确保崩溃自动重启:
pm2 start dist/main.js --name e-learn-backend pm2 save
4. 配置Nginx(静态文件+API反向代理)
编辑Nginx站点配置文件:
sudo nano /etc/nginx/sites-available/e-learn
写入以下配置(替换你的EC2公网IP或域名,3000为你的NestJS端口):
server { listen 80; server_name <你的EC2公网IP或域名>; # 前端静态文件服务 location / { root /home/ubuntu/E-learn/backend/dist/frontend; index index.html; try_files $uri $uri/ /index.html; } # 后端API反向代理 location /api { 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; } }
- 启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/e-learn /etc/nginx/sites-enabled/ sudo rm /etc/nginx/sites-enabled/default sudo nginx -t && sudo systemctl restart nginx
5. 防火墙配置
开放HTTP和SSH端口:
sudo ufw allow 80/tcp sudo ufw allow ssh sudo ufw enable
内容的提问来源于stack exchange,提问作者sanjay m s
相关产品推荐
相关产品推荐

