3.2 KiB
3.2 KiB
修复司机端图片404问题指南
问题描述
司机上传的照片返回404错误,无法在页面中渲染。
错误日志示例:
Failed to load image https://dda.gaowenbu.cn/uploads/20260627112141_xxx.png
the server responded with a status of 404 (HTTP/1.1 404)
问题原因
图片上传流程:
- 前端调用
/api/files/local-upload上传文件 - 后端保存到服务器本地目录
/tmp/order-flow-oss/local-uploads/ - 返回URL格式:
https://dda.gaowenbu.cn/uploads/{filename} - Nginx代理
/uploads/到后端服务 - 后端提供静态文件访问
404错误原因:
- 生产服务器上的目录
/tmp/order-flow-oss/local-uploads不存在 - 目录权限不正确
- FastAPI服务没有重启
- Nginx配置没有生效
排查步骤
步骤1:检查目录是否存在
# 登录服务器
ssh root@121.41.52.85
# 检查目录是否存在
ls -la /tmp/order-flow-oss/local-uploads/
# 如果不存在,创建目录
sudo mkdir -p /tmp/order-flow-oss/local-uploads/
sudo chmod 755 /tmp/order-flow-oss/local-uploads/
步骤2:检查FastAPI服务状态
# 检查FastAPI服务是否运行
ps aux | grep uvicorn
# 如果没有运行,重启服务
cd /path/to/backend
sudo systemctl restart fastapi # 或使用其他方式重启
步骤3:检查Nginx配置
# 检查Nginx配置是否正确
sudo nginx -t
# 重新加载Nginx配置
sudo nginx -s reload
步骤4:测试文件上传和访问
# 手动测试上传
curl -X POST http://127.0.0.1:8000/api/files/local-upload \
-H "Authorization: Bearer <your-token>" \
-F "file=@test.jpg"
# 测试文件访问
curl -I https://dda.gaowenbu.cn/uploads/test.jpg
修复方案
方案1:确保目录存在(推荐)
在服务器上执行:
# 创建目录
sudo mkdir -p /tmp/order-flow-oss/local-uploads/
# 设置权限
sudo chmod 755 /tmp/order-flow-oss/local-uploads/
sudo chown -R www:www /tmp/order-flow-oss/local-uploads/ # 假设Nginx用户是www
# 重启FastAPI服务
sudo systemctl restart fastapi
# 重新加载Nginx
sudo nginx -s reload
方案2:修改上传目录(可选)
如果希望使用不同的目录,修改 .env 文件:
# 编辑后端配置
vi /path/to/backend/.env
# 修改 LOCAL_UPLOAD_DIR 配置
LOCAL_UPLOAD_DIR=/var/www/uploads # 使用其他目录
然后创建对应目录并重启服务:
sudo mkdir -p /var/www/uploads
sudo chmod 755 /var/www/uploads
sudo systemctl restart fastapi
验证修复
- 重新上传图片:在司机端重新上传一张照片
- 检查控制台:查看是否还有404错误
- 验证图片显示:确认图片可以正常显示
- 测试其他功能:确保运单识别等功能正常
注意事项
- 文件权限:确保Nginx用户有权限读取上传目录
- 磁盘空间:确保服务器有足够的磁盘空间
- 备份:修改配置前建议备份相关文件
- 日志查看:如果问题仍然存在,查看Nginx和FastAPI的日志
# 查看Nginx错误日志
tail -f /www/wwwlogs/dda.gaowenbu.cn.error.log
# 查看FastAPI日志
journalctl -u fastapi -f