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

NestJS应用通过DevOps部署到Azure App Service后访问返回404问题求助

问题排查与解决方案

核心问题定位

你当前使用的启动命令存在本质错误:

pm2 serve 是用于托管静态站点的命令,仅能提供HTML/CSS/JS等静态资源的访问能力,而NestJS是Node.js服务端应用,dist 文件夹存储的是编译后的服务端执行代码,不能通过静态托管方式启动。

你看到的容器初始化成功是Azure平台层面检测到容器启动完成,和容器内部的Node服务是否正常运行没有直接关联,这也是容器状态正常但访问返回404的核心原因。


第一步:修复启动命令

将原有启动命令替换为以下内容:

pm2 start /home/site/wwwroot/dist/main.js --no-daemon

不需要额外重定向日志到app.log,Azure App Service会自动捕获进程的标准输出/标准错误到平台日志系统中,方便后续排查。


其他常见排查项

如果修改启动命令后仍存在404问题,按以下顺序排查:

  • 确认部署产物结构完整
    可以通过Azure门户进入App Service的「控制台」或「SSH」功能,执行 ls /home/site/wwwroot 命令检查文件:
    1. 确认 dist 目录存在,且目录下存在 main.js 入口文件
    2. 确认项目依赖已安装:如果部署包未包含 node_modules 文件夹,需要在启动命令前增加依赖安装逻辑,比如 npm install --production && pm2 start /home/site/wwwroot/dist/main.js --no-daemon
  • 确认服务监听端口配置正确
    Azure App Service Linux 环境要求应用监听 PORT 环境变量指定的端口(默认是80),需要修改NestJS项目的 main.ts 监听逻辑:
    await app.listen(process.env.PORT || 3000);
    
    修改后需要重新构建部署生效。
  • 确认路由访问路径正确
    如果NestJS项目配置了全局路由前缀(比如 app.setGlobalPrefix('api')),直接访问根路径会返回404,需要携带前缀访问对应接口,比如访问 /api/xxx 而非 /xxx。
  • 查看服务运行日志
    进入App Service控制台执行 cat /home/site/wwwroot/app.log 查看之前重定向的日志,确认是否存在依赖缺失、启动报错等异常信息。

内容的提问来源于stack exchange,提问作者user11455801

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:48:03