部署Django API到Azure Web App遇404错误求助
Django部署Azure Web App后出现404问题的排查与解决
根据你描述的情况,本地运行正常但Azure访问404,结合提供的代码,可按以下步骤排查:
1. 先验证具体API端点是否可用
你的路由配置中,根路径(/)并未绑定任何视图,仅包含了api.urls里的posts/和replies/端点。直接访问Azure默认域名(即根路径)必然返回404,这是符合当前路由逻辑的。
请先测试访问具体端点:
https://<你的应用名称>.azurewebsites.net/posts/https://<你的应用名称>.azurewebsites.net/replies/
如果这些端点也返回404,再继续下面的排查步骤。
2. 确认Azure启动命令配置正确
Azure Web App部署Django需要指定正确的启动命令,确保应用能正确加载WSGI入口。常见的启动命令(基于Gunicorn)为:
gunicorn --bind=0.0.0.0 --workers=4 <你的项目名称>.wsgi
需要替换<你的项目名称>为实际项目根目录下wsgi.py所在的文件夹名称(即包含settings.py的目录)。
你可以在Azure门户的配置 > 常规设置 > 启动命令中检查并修改该配置,保存后重启应用。
3. 检查production.py中的ALLOWED_HOSTS配置
必须将Azure应用的域名加入ALLOWED_HOSTS,否则Django会拒绝请求(可能表现为404或400错误):
ALLOWED_HOSTS = ['<你的应用名称>.azurewebsites.net', 'localhost']
如果使用了自定义域名,也要一并添加进去。
4. 验证部署的文件结构完整性
通过Azure门户的高级工具 > 启动Kudu,进入网站的文件管理器,确认以下内容:
api应用的urls.py、views.py等文件已正确部署- 项目根目录下的
urls.py存在且配置正确 production.py的配置已正确应用(可查看文件内容确认)
5. 开启详细日志排查请求流向
Azure默认日志可能不足以定位问题,可在production.py中添加Django日志配置,查看请求是否真的到达应用:
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'class': 'logging.StreamHandler', }, }, 'root': { 'handlers': ['console'], 'level': 'INFO', }, 'loggers': { 'django': { 'handlers': ['console'], 'level': 'INFO', 'propagate': False, }, }, }
保存后重启应用,在Azure门户的日志流中查看:
- 是否有Django的启动日志(确认应用已正常启动)
- 当请求进来时,是否有对应的日志记录(确认请求路径是否正确)
6. 确认admin端点是否可用
尝试访问https://<你的应用名称>.azurewebsites.net/admin/,如果也返回404,说明应用可能未正确加载路由,需重点排查启动命令、文件结构或WSGI配置。
内容的提问来源于stack exchange,提问作者Peach Bay
相关产品推荐
相关产品推荐

