部署在Azure App Service的Laravel 8 API部分路由Nginx 404问题
Laravel 8部署Azure App Service后部分API路由404的修复方案
检查Nginx的URL重写规则
本地正常但部署后部分路由404,核心原因通常是Nginx未正确将请求转发到Laravel的index.php:
- 确保Nginx配置中包含完整的重写逻辑,覆盖所有路径(包括多级API路由):
location / { try_files $uri $uri/ /index.php?$query_string; } - 若单独配置了
/api前缀的location块,需同步添加重写规则:location /api { try_files $uri $uri/ /index.php?$query_string; } - 修改配置后,在Azure SSH控制台执行
sudo service nginx restart重启服务生效。
验证路由定义与请求匹配
- 登录Azure SSH控制台,执行
php artisan route:list,核对/api/v1/doctors/hospitals和/api/v1/file/upload的URI、请求方法、控制器绑定是否完全正确,排查拼写或方法不匹配问题。 - 确认实际请求的方法(如POST/GET)与路由定义一致,比如文件上传路由通常为POST,误用GET会直接返回404。
检查Azure虚拟应用程序配置
- 若在Azure门户给App Service设置了虚拟应用程序,确保
/api路径的物理路径指向Laravel项目的public目录,且勾选“应用程序”选项,保证请求被正确转发到Laravel入口。
清理路由缓存
- 部署后可能存在路由缓存失效,执行以下命令重置:
php artisan route:clear php artisan route:cache - 生产环境建议保持路由缓存,确保动态路由或分组路由在缓存前能正常解析。
修复文件上传相关权限(针对/file/upload路由)
- 执行
php artisan storage:link创建public/storage软链接,确保上传文件的存储路径可访问。 - 设置目录权限,让Nginx进程拥有读写权限:
chmod -R 755 storage/ chown -R www-data:www-data storage/
内容的提问来源于stack exchange,提问作者Raven
相关产品推荐
相关产品推荐

