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

部署Spring Boot WAR包至Azure后遇CGI错误,请求协助排查

解决Spring Boot WAR部署Azure后出现CGI错误的排查方案
  • 检查Java版本与容器配置
    登录Azure门户进入目标App Service,在「配置」>「常规设置」里:

    • 确认Java版本和项目使用的完全匹配(比如项目用Java 11,就别选Java 8)
    • 选择对应版本的Tomcat作为Web容器,Spring Boot WAR包依赖Tomcat运行,别选错成Java SE模式(除非你用的是内嵌容器的可执行WAR)
  • 验证WAR包的有效性

    • 本地先把WAR包部署到Tomcat里测试,确认启动无异常,排除项目本身的问题
    • 检查pom.xml配置:确保<packaging>war</packaging>已设置,若用外部Tomcat,需排除内嵌Tomcat依赖:
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
          <scope>provided</scope>
      </dependency>
      
    • 确认WAR包大小未超出Azure App Service的部署限制(通常是1GB)
  • 查看详细错误日志
    这个CGI错误只是表层提示,真正的问题藏在日志里:

    • 进入App Service的「日志」>「应用日志」,开启文件系统日志
    • 用az webapp log tail --name <你的应用名> --resource-group <资源组名>命令实时查看启动日志,找到具体的异常堆栈(比如依赖缺失、配置错误、数据库连接失败)
  • 确认部署路径与启动命令

    • Tomcat部署的WAR包要放在site/wwwroot/webapps目录下,如果你是手动上传或用CI/CD部署,别传到根目录(根目录会被服务器当成CGI程序处理)
    • 不要设置错误的自定义启动命令,Spring Boot WAR包在Azure Tomcat环境下不需要额外启动命令,默认会自动部署
  • 检查环境变量与端口配置

    • 在App Service的「配置」>「应用程序设置」里,确认所有必要的环境变量(比如数据库连接字符串、Spring profile)都已正确设置
    • Spring Boot的端口配置要写成server.port=${PORT:8080},Azure会动态分配端口,硬编码端口会导致启动失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 09:18:13