peixue-dev/peidu/Archive/一次性文件/[一次性]本地开发环境远程上传配置指南-2026-01-26.md

213 lines
5.2 KiB
Markdown
Raw Normal View History

# 本地开发环境远程上传配置指南
## 问题描述
本地开发环境上传图片到远程服务器后返回的URL是 `http://localhost:8089/uploads/...`导致图片无法加载404错误
## 原因分析
**数据流程:**
```
前端(5173) → 本地后端(8089) → 远程服务器(px.ddn-ai.cloud)
保存文件成功
返回URL: localhost:8089 ❌ (错误)
```
**问题根源:**
- 远程服务器的配置文件中 `url-prefix` 设置为 `localhost:8089`
- 远程服务器返回的URL使用的是它自己的配置
- 本地后端直接转发了远程服务器的响应
## 解决方案
### 1. 本地开发环境配置(已完成✅)
**文件:** `peidu/backend/src/main/resources/application.yml`
```yaml
file:
upload:
mode: remote # 使用远程上传模式
remote:
url: https://px.ddn-ai.cloud/api/file/upload/direct
timeout: 30
url-prefix: https://px.ddn-ai.cloud/uploads/
```
**文件:** `peidu/backend/src/main/resources/application-dev.yml`
```yaml
file:
upload:
mode: remote # 使用远程上传模式
local-path: C:/peidu/uploads/
remote:
url: https://px.ddn-ai.cloud/api/file/upload/direct
timeout: 30
url-prefix: https://px.ddn-ai.cloud/uploads/
allowed-types: jpg,jpeg,png,gif,bmp,webp,pdf,doc,docx,xls,xlsx
max-size: 10
```
### 2. 远程服务器配置(需要修改⚠️)
**登录远程服务器:**
```bash
ssh root@px.ddn-ai.cloud
```
**修改配置文件:**
找到远程服务器上的配置文件(通常在项目目录下):
- `application.yml`
- `application-prod.yml``application-dev.yml`
**修改为:**
```yaml
file:
upload:
mode: local # 远程服务器使用本地保存模式
local-path: /www/wwwroot/px.ddn-ai.cloud/Image/
url-prefix: https://px.ddn-ai.cloud/uploads/ # ⚠️ 关键:必须是远程地址
allowed-types: jpg,jpeg,png,gif,bmp,webp,pdf,doc,docx,xls,xlsx
max-size: 10
```
**重启远程服务器后端:**
```bash
# 停止旧进程
ps aux | grep java
kill -9 <进程ID>
# 启动新进程
cd /path/to/backend
nohup java -jar peidu-backend-1.0.0.jar &
```
### 3. Nginx配置确认
确保远程服务器的 Nginx 配置正确映射 `/uploads/` 路径:
```nginx
location /uploads/ {
alias /www/wwwroot/px.ddn-ai.cloud/Image/;
autoindex off;
}
```
## 配置对比表
| 环境 | mode | local-path | url-prefix | 说明 |
|------|------|-----------|-----------|------|
| 本地开发 | remote | C:/peidu/uploads/ | https://px.ddn-ai.cloud/uploads/ | 上传到远程 |
| 远程服务器 | local | /www/wwwroot/px.ddn-ai.cloud/Image/ | https://px.ddn-ai.cloud/uploads/ | 本地保存 |
## 验证步骤
### 1. 验证远程服务器配置
在远程服务器上运行:
```bash
curl -X POST https://px.ddn-ai.cloud/api/file/upload/direct \
-F "file=@test.jpg"
```
应该返回:
```json
{
"code": 200,
"message": "上传成功",
"data": {
"fileName": "20260126_xxx.jpg",
"fileUrl": "https://px.ddn-ai.cloud/uploads/20260126_xxx.jpg",
"fileSize": "12345",
"fileType": "jpg"
}
}
```
**关键检查:** `fileUrl` 必须是 `https://px.ddn-ai.cloud/uploads/...`
### 2. 验证本地上传
在本地管理后台上传图片,检查:
1. 上传成功
2. 返回的URL是 `https://px.ddn-ai.cloud/uploads/...`
3. 图片可以正常显示
### 3. 验证图片访问
直接在浏览器访问:
```
https://px.ddn-ai.cloud/uploads/20260126_xxx.jpg
```
应该能正常显示图片。
## 常见问题
### Q1: 远程服务器配置文件在哪里?
通常在以下位置之一:
- `/www/wwwroot/px.ddn-ai.cloud/backend/application.yml`
- `/opt/peidu/application.yml`
- JAR包同目录下的 `application.yml`
### Q2: 如何查看远程服务器的配置?
```bash
# 查找配置文件
find / -name "application*.yml" 2>/dev/null
# 查看配置内容
cat /path/to/application.yml | grep -A 10 "file:"
```
### Q3: 修改配置后需要重启吗?
是的,必须重启远程服务器的后端服务才能生效。
### Q4: 如何确认配置生效?
查看远程服务器启动日志:
```bash
tail -f nohup.out
```
应该看到:
```
========================================
📁 文件上传配置初始化
上传模式: local
本地保存路径: /www/wwwroot/px.ddn-ai.cloud/Image/
✅ 本地保存模式
访问URL前缀: https://px.ddn-ai.cloud/uploads/
========================================
```
## 总结
**核心要点:**
1. 本地开发环境:`mode=remote`,上传到远程服务器
2. 远程服务器:`mode=local`,保存到本地磁盘
3. 远程服务器的 `url-prefix` 必须是 `https://px.ddn-ai.cloud/uploads/`
4. 修改远程配置后必须重启服务
**修改完成后的效果:**
```
前端 → 本地后端(remote模式) → 远程服务器(local模式)
保存到 /www/wwwroot/.../Image/
返回 https://px.ddn-ai.cloud/uploads/xxx.jpg ✅
前端可以正常加载图片
```
## 日期
2026-01-26