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

139 lines
3.2 KiB
Markdown
Raw Normal View 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检查目录是否存在
```bash
# 登录服务器
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服务状态
```bash
# 检查FastAPI服务是否运行
ps aux | grep uvicorn
# 如果没有运行,重启服务
cd /path/to/backend
sudo systemctl restart fastapi # 或使用其他方式重启
```
### 步骤3检查Nginx配置
```bash
# 检查Nginx配置是否正确
sudo nginx -t
# 重新加载Nginx配置
sudo nginx -s reload
```
### 步骤4测试文件上传和访问
```bash
# 手动测试上传
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确保目录存在推荐
在服务器上执行:
```bash
# 创建目录
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` 文件:
```bash
# 编辑后端配置
vi /path/to/backend/.env
# 修改 LOCAL_UPLOAD_DIR 配置
LOCAL_UPLOAD_DIR=/var/www/uploads # 使用其他目录
```
然后创建对应目录并重启服务:
```bash
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的日志
```bash
# 查看Nginx错误日志
tail -f /www/wwwlogs/dda.gaowenbu.cn.error.log
# 查看FastAPI日志
journalctl -u fastapi -f
```