dingdanquanliucheng/deploy/修复图片404问题指南.md

3.2 KiB
Raw Blame History

修复司机端图片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)

问题原因

图片上传流程:

  1. 前端调用 /api/files/local-upload 上传文件
  2. 后端保存到服务器本地目录 /tmp/order-flow-oss/local-uploads/
  3. 返回URL格式https://dda.gaowenbu.cn/uploads/{filename}
  4. Nginx代理 /uploads/ 到后端服务
  5. 后端提供静态文件访问

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

验证修复

  1. 重新上传图片:在司机端重新上传一张照片
  2. 检查控制台查看是否还有404错误
  3. 验证图片显示:确认图片可以正常显示
  4. 测试其他功能:确保运单识别等功能正常

注意事项

  1. 文件权限确保Nginx用户有权限读取上传目录
  2. 磁盘空间:确保服务器有足够的磁盘空间
  3. 备份:修改配置前建议备份相关文件
  4. 日志查看如果问题仍然存在查看Nginx和FastAPI的日志
# 查看Nginx错误日志
tail -f /www/wwwlogs/dda.gaowenbu.cn.error.log

# 查看FastAPI日志
journalctl -u fastapi -f