You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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:prod
    
    确认后端dist目录下生成了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:07:18