diff --git a/README.md b/README.md index a16662e..1f2571d 100644 --- a/README.md +++ b/README.md @@ -99,12 +99,14 @@ docker compose logs -f ai-service | 服务 | 地址 | 说明 | |------|------|------| -| 前端管理界面 | http://服务器IP:3000 | Vue 管理后台 | +| 前端管理界面 | http://服务器IP:8181 | Vue 管理后台 | | 后端 API | http://服务器IP:8080 | FastAPI 服务 | | API 文档 | http://服务器IP:8080/docs | Swagger UI | | Qdrant 控制台 | http://服务器IP:6333/dashboard | 向量数据库管理 | | Ollama API | http://服务器IP:11434 | 嵌入模型服务 | +> **注意**: 如果宿主机 8080 端口已被占用,可以只通过前端管理界面 (8181) 访问,前端会自动代理后端 API 请求。 + ## 服务架构 ``` @@ -114,7 +116,7 @@ docker compose logs -f ai-service │ ▼ ┌─────────────────────────────────────────────────────────┐ -│ ai-service-admin (端口3000) │ +│ ai-service-admin (端口8181) │ │ - Nginx 静态文件服务 │ │ - 反向代理 /api/* → ai-service:8080 │ └─────────────────────────────────────────────────────────┘ @@ -161,6 +163,24 @@ docker compose down docker compose down -v ``` +## 宿主机 Nginx 配置(可选) + +如果需要通过宿主机 Nginx 统一管理入口(配置域名、SSL证书),可参考 `deploy/nginx.conf.example`: + +```bash +# 复制配置文件 +sudo cp deploy/nginx.conf.example /etc/nginx/conf.d/ai-service.conf + +# 修改配置中的域名 +sudo vim /etc/nginx/conf.d/ai-service.conf + +# 测试配置 +sudo nginx -t + +# 重载 Nginx +sudo nginx -s reload +``` + ## 本地开发 ### 后端开发 diff --git a/deploy/nginx.conf.example b/deploy/nginx.conf.example new file mode 100644 index 0000000..c4fda2f --- /dev/null +++ b/deploy/nginx.conf.example @@ -0,0 +1,68 @@ +# AI Service Nginx Configuration +# 将此文件放置于 /etc/nginx/conf.d/ai-service.conf +# 或 include 到主配置文件中 + +upstream ai_service_admin { + server 127.0.0.1:8181; +} + +server { + listen 80; + server_name your-domain.com; # 替换为你的域名或服务器IP + + # 访问日志 + access_log /var/log/nginx/ai-service.access.log; + error_log /var/log/nginx/ai-service.error.log; + + location / { + proxy_pass http://ai_service_admin; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_cache_bypass $http_upgrade; + + # SSE 流式响应支持 + proxy_read_timeout 300s; + proxy_connect_timeout 75s; + proxy_buffering off; + } +} + +# HTTPS 配置示例 (使用 Let's Encrypt) +# server { +# listen 443 ssl http2; +# server_name your-domain.com; +# +# ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; +# ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem; +# +# ssl_protocols TLSv1.2 TLSv1.3; +# ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; +# ssl_prefer_server_ciphers off; +# +# location / { +# proxy_pass http://ai_service_admin; +# proxy_http_version 1.1; +# proxy_set_header Upgrade $http_upgrade; +# proxy_set_header Connection 'upgrade'; +# proxy_set_header Host $host; +# proxy_set_header X-Real-IP $remote_addr; +# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +# proxy_set_header X-Forwarded-Proto $scheme; +# proxy_cache_bypass $http_upgrade; +# proxy_read_timeout 300s; +# proxy_connect_timeout 75s; +# proxy_buffering off; +# } +# } + +# HTTP 重定向到 HTTPS +# server { +# listen 80; +# server_name your-domain.com; +# return 301 https://$server_name$request_uri; +# } diff --git a/docker-compose.yaml b/docker-compose.yaml index 5340985..eb6522b 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -40,7 +40,7 @@ services: container_name: ai-service-admin restart: unless-stopped ports: - - "3000:80" + - "8181:80" depends_on: - ai-service networks: