已部署的Azure WebApp返回403错误,寻求排查帮助
排查Azure Python WebApp 403/404错误指引
一、检查WebApp启动配置
- 确认启动命令正确性:Azure WebApp默认依赖gunicorn启动Python应用,需在应用设置中配置
STARTUP_COMMAND为gunicorn --bind=0.0.0.0 --timeout 600 app:app(app:app对应app.py中Flask实例名为app,若实例名不同需同步修改,比如app:my_flask_app)。 - 验证
PYTHONPATH设置:确保该环境变量指向代码根目录,Linux环境为/home/site/wwwroot,Windows环境为D:\home\site\wwwroot,避免模块查找失败。
二、定位gunicorn/Flask启动日志
- Linux环境:日志存于Kudu的
/home/LogFiles/目录,具体为gunicorn.log或_logs/gunicorn--*.log,可通过SCM终端执行cat /home/LogFiles/gunicorn.log查看启动输出。 - Windows环境:启动日志在
D:\home\LogFiles\Application\python_django.log中,也可通过Azure门户的「日志流」-「应用日志」标签实时查看。 - Azure门户的「日志流」会实时输出gunicorn启动信息,比如是否成功加载
app.py、是否存在模块导入错误等关键内容。
三、验证代码部署结构
- 确保
app.py位于site/wwwroot根目录,若代码嵌套在子文件夹,需调整启动命令路径,比如gunicorn --bind=0.0.0.0 app_subfolder.app:app。 - 检查
requirements.txt是否包含gunicorn,Azure默认会安装该依赖,但显式声明可避免部署遗漏。
四、额外排查操作
- 在Kudu终端手动启动gunicorn:进入SCM的bash终端,激活虚拟环境(若使用)后执行
gunicorn app:app,直接查看启动报错信息。 - 确认路由配置:检查
app.py中根路由@app.route('/')是否存在,子路由如/test的定义是否正确,避免因路由匹配问题返回404。 - 检查WebApp SKU限制:虽然免费层一般不影响基础启动,但可临时切换到标准层测试,排除资源限制导致的启动异常。
内容的提问来源于stack exchange,提问作者qeadz
相关产品推荐
相关产品推荐

