Azure部署Node.js应用遇listen EACCES 0.0.0.0:80错误求助
解决Azure Web App部署Node.js应用时的EACCES 0.0.0.0:80错误
这个问题的核心原因其实很清晰:在Linux/Unix环境里,监听1024以下的端口(比如80)需要root级别的系统权限,但Azure Web Apps的应用进程是以普通用户身份运行的,根本没有权限绑定这类低端口。
你在Google Cloud上能正常跑起来,是因为GCP的对应服务(比如App Engine)会自动设置process.env.PORT环境变量,你的代码实际用的是平台分配的高端口,而非fallback到80,自然不会触发权限问题。但在Azure上,如果process.env.PORT没被正确读取(或者某些边缘场景下未被设置),代码尝试绑定80端口就会直接抛出EACCES错误。
具体修复方案:
直接移除80作为 fallback端口,完全依赖Azure提供的
process.env.PORT:httpsServer.listen(process.env.PORT);Azure Web Apps会自动为你的应用分配一个可用的高端口,并通过
PORT环境变量传递给进程,平台会负责把外部的HTTP/HTTPS请求反向代理到这个端口上。如果想兼顾本地开发的便利性(避免本地运行还要手动设置PORT),可以把fallback端口改成1024以上的数值,比如3000:
httpsServer.listen(process.env.PORT || 3000);这样本地开发时用3000端口调试,部署到Azure时自动使用平台分配的端口,两边都能正常运行。
额外要确认的点:
- 你的Azure Web App配置里不要手动修改
PORT环境变量,保持默认即可,平台会自动管理这个值。 - 应用的启动命令配置正确,确保Node.js进程能正常读取到环境变量。
内容的提问来源于stack exchange,提问作者emrece
相关产品推荐
相关产品推荐

