部署Spring Boot API至Azure App Service时端口80占用问题求助
解决Azure App Service中Spring Boot端口80占用问题
核心原因
Azure App Service的80/443端口由平台前端的反向代理服务占用,你的Spring应用无需直接监听这两个端口,只需监听Azure分配的内部端口,该端口通过环境变量PORT传递。
具体解决方案
1. 修改Spring Boot配置,适配Azure内部端口
在Spring Boot配置文件中添加端口配置,让应用自动读取环境变量:
- 若使用
application.properties:server.port=${PORT:8080} - 若使用
application.yml:server: port: ${PORT:8080}
8080是本地开发的 fallback 端口,部署到Azure后会自动替换为平台分配的内部端口。
2. 利用Azure自动部署机制,避免手动启动
Azure App Service会自动检测可执行JAR包并启动应用,无需手动执行java -jar命令:
- 确保Gradle构建时使用
bootJar任务生成可执行JAR - 在App Service的配置页面,启动命令留空(或设置为
java -jar /home/site/wwwroot/app.jar,推荐留空让平台自动处理)
3. 纠正端口占用排查的误区
你手动终止端口80进程导致SSH关闭,是因为该进程是Azure平台的代理服务,不能手动终止。平台会自动完成80端口到应用内部端口的流量转发,无需干预代理进程。
4. 验证配置有效性
部署后通过App Service的日志流查看启动日志,若日志显示Tomcat started on port(s): XXXXX (http)(XXXXX为非80端口),说明配置生效,Azure会自动将80端口的外部流量转发到该内部端口。
内容的提问来源于stack exchange,提问作者Denisa Corbu
相关产品推荐
相关产品推荐

