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

Azure App Service部署Node.js(PM2)应用遇8080端口健康检查失败问题

解决Azure App Service中PM2部署Node.js应用8080端口健康检查失败问题

第一步:先排查容器日志

  • 登录Azure门户,进入目标App Service,左侧菜单找日志->容器日志,重点看端口绑定、PM2配置、应用启动相关的报错信息。
  • 也可以用Azure CLI拉取实时日志:
    az webapp log tail --name <你的AppService名称> --resource-group <资源组名称>
    

第二步:确认Node.js应用的端口绑定

  • 必须让应用监听0.0.0.0:8080,不能只绑定localhost——容器内的localhost仅对内生效,外部探测访问不到。示例代码:
    const express = require('express');
    const app = express();
    const port = process.env.PORT || 8080; // 优先用Azure提供的PORT环境变量
    
    app.get('/', (req, res) => {
      res.send('OK');
    });
    
    app.listen(port, '0.0.0.0', () => { // 绑定0.0.0.0
      console.log(`App running on port ${port}`);
    });
    

第三步:检查PM2配置是否正确

  • 用PM2配置文件(如ecosystem.config.js)的话,要确保启动命令和端口配置无误:
    module.exports = {
      apps: [{
        name: "stockmgmt",
        script: "./server.js", // 你的应用入口文件路径
        instances: "max",
        env: {
          NODE_ENV: "production",
          PORT: 8080
        }
      }]
    };
    
  • 启动命令里别乱指定其他端口,避免覆盖配置。

第四步:验证健康检查路径

  • Azure默认健康检查路径是/,如果你的应用根路径不返回200状态码,会直接导致探测失败。可以去App Service的配置->常规设置里,把健康检查路径改成你应用实际可用的端点(比如/health),同时确保该端点能返回200 OK。

第五步:检查容器启动命令

  • 在App Service配置->常规设置里,启动命令要用容器适配的PM2 runtime模式,比如:
    pm2-runtime start ecosystem.config.js --env production
    
    别用普通的pm2 start,pm2-runtime会保持前台运行,防止容器意外退出。

第六步:测试容器内部端口连通性

  • 如果前面都没问题,通过SSH进容器排查:
    1. 左侧菜单开发工具->SSH进入容器终端;
    2. 检查端口是否监听:
      netstat -tulpn | grep 8080
      
      输出里有0.0.0.0:8080才算绑定正确;
    3. 本地测试访问:
      curl http://localhost:8080
      
      如果能正常返回内容,说明应用本身没问题,问题可能出在Azure网络或健康检查的额外配置上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:46:00