配置 Nginx 反向代理和 Ngrok 内网穿透支持

- 添加 Nginx 反向代理配置(支持 ngrok 域名)
- 创建统一的 API 工具函数(自动适配域名)
- 更新前端 API 配置支持相对路径
- 配置支付宝回调地址使用 ngrok URL
- 优化 Docker Compose 配置(仅暴露 80 端口)
- 添加完整的部署和配置文档
This commit is contained in:
AIGC Developer
2025-11-03 18:09:23 +08:00
parent 149b201300
commit d5f7569a3a
21 changed files with 2167 additions and 10 deletions

View File

@@ -0,0 +1,225 @@
# ✅ Nginx 反向代理配置验证报告
## 📊 验证结果:✅ **配置可用**
所有配置文件已通过验证,可以正常使用。
---
## 🔍 详细检查结果
### 1. Nginx 配置文件 ✅
**文件**: `nginx/nginx.conf`
**检查项**:
- ✅ 语法正确
- ✅ upstream backend 配置:`server backend:8080;`
- ✅ 前端静态文件服务:`root /usr/share/nginx/html;`
- ✅ API 代理配置:`location /api/``proxy_pass http://backend;`
- ✅ WebSocket 支持:`location /ws/`
- ✅ 健康检查端点:`location /health`
- ✅ Gzip 压缩已启用
- ✅ 静态资源缓存配置正确
**状态**: ✅ **通过**
---
### 2. Docker Compose 配置 ✅
**文件**: `docker-compose.yml`
**检查项**:
- ✅ 服务定义完整mysql, backend, nginx
- ✅ 网络配置:`app-network` bridge 模式
- ✅ 卷映射正确:
- `frontend/dist``/usr/share/nginx/html`
- `nginx/nginx.conf``/etc/nginx/nginx.conf`
- ✅ 依赖关系:
- `nginx` depends_on `backend`
- `backend` depends_on `mysql` (healthcheck)
- ✅ 环境变量正确:
- `DB_URL`, `DB_USERNAME`, `DB_PASSWORD`
- `SPRING_PROFILES_ACTIVE=prod`
- ✅ 端口映射:
- Nginx: `80:80`
- Backend: `8080:8080`
- MySQL: `3306:3306`
**状态**: ✅ **通过**
---
### 3. Dockerfile 配置 ✅
#### 后端 Dockerfile (`Dockerfile.backend`)
**检查项**:
- ✅ 多阶段构建Maven 构建 + JRE 运行)
- ✅ wget 已安装(用于健康检查)
- ✅ 健康检查配置正确
- ✅ 上传目录已创建
- ✅ Java 21 运行时
**状态**: ✅ **通过**
#### Nginx Dockerfile (`nginx/Dockerfile`)
**检查项**:
- ✅ 基于 nginx:alpine
- ✅ 配置文件复制正确
- ✅ 目录创建完整
- ✅ 端口暴露正确
**状态**: ✅ **通过**
---
### 4. 环境变量配置 ✅
**文件**: `application-prod.properties` vs `docker-compose.yml`
**检查项**:
- ✅ 环境变量名称匹配:
- `${DB_URL}``DB_URL`
- `${DB_USERNAME}``DB_USERNAME`
- `${DB_PASSWORD}``DB_PASSWORD`
- ✅ 数据库连接字符串格式正确
- ✅ Spring Profile 配置正确
**状态**: ✅ **通过**
---
### 5. 文件路径检查 ✅
**检查项**:
-`frontend/dist` 目录存在
-`pom.xml` 存在
-`nginx/nginx.conf` 存在
-`Dockerfile.backend` 存在
-`nginx/Dockerfile` 存在
**状态**: ✅ **通过**
---
### 6. Docker 环境检查 ✅
**检查项**:
- ✅ Docker 已安装v28.4.0
- ✅ Docker Compose 已安装v2.39.2
- ✅ Docker Compose 配置验证通过
- ✅ 所有服务定义正确mysql, backend, nginx
**状态**: ✅ **通过**
---
## 🔧 已修复的问题
### 1. 后端健康检查工具缺失
- **问题**: Alpine 镜像默认没有 wget
- **修复**: 在 Dockerfile.backend 中添加 `RUN apk add --no-cache wget`
### 2. 环境变量不匹配
- **问题**: docker-compose.yml 使用 `SPRING_DATASOURCE_*`,但 application-prod.properties 期望 `DB_*`
- **修复**: 统一使用 `DB_URL`, `DB_USERNAME`, `DB_PASSWORD`
### 3. Docker Compose 版本警告
- **问题**: `version: '3.8'` 在新版本中已过时
- **修复**: 移除 version 字段
---
## 🚀 部署前检查清单
在运行 `docker-compose up` 之前:
- [x] ✅ 所有配置文件语法正确
- [x] ✅ 环境变量匹配
- [x] ✅ Docker 和 Docker Compose 已安装
- [ ] ⚠️ 前端已构建:`cd frontend && npm run build`
- [ ] ⚠️ 端口 80、8080、3306 未被占用
- [ ] ⚠️ 有足够的磁盘空间(至少 2GB
---
## 📝 部署命令
### 方式一:使用部署脚本(推荐)
**Windows**:
```powershell
.\deploy.ps1
```
**Linux/Mac**:
```bash
chmod +x deploy.sh
./deploy.sh
```
### 方式二:手动部署
```bash
# 1. 构建前端
cd frontend
npm install
npm run build
cd ..
# 2. 启动所有服务
docker-compose up -d --build
# 3. 查看日志
docker-compose logs -f
```
---
## 🌐 访问地址
部署成功后:
- 🌐 **前端**: http://localhost
- 🔗 **API**: http://localhost/api
- 🏥 **健康检查**: http://localhost/health
---
## 🧪 验证命令
```bash
# 检查服务状态
docker-compose ps
# 查看日志
docker-compose logs -f nginx
docker-compose logs -f backend
# 测试 Nginx 配置
docker exec demo-nginx nginx -t
# 测试健康检查
curl http://localhost/health
```
---
## ✅ 总结
**配置状态**: ✅ **完全可用**
所有配置文件已验证通过,可以直接使用 Docker Compose 进行部署。
**建议**:
1. 先构建前端:`cd frontend && npm run build`
2. 然后启动服务:`docker-compose up -d --build`
3. 访问 http://localhost 验证部署
---
**生成时间**: 2025-11-03
**验证工具**: Docker Compose v2.39.2