add bind ips
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
ORAL_TRAINER_DATA_DIR=/app/sentence_api/data
|
||||
# API 监听地址:默认 127.0.0.1(仅本机/nginx 回源)。需要内网直连 8000 端口时改为 0.0.0.0。
|
||||
# ORAL_TRAINER_BIND_HOST=0.0.0.0
|
||||
PUBLIC_BASE_URL=https://videoservice.d1kt.cn
|
||||
ADMIN_API_KEY=replace-with-a-long-random-secret
|
||||
CLIENT_API_KEY=replace-with-a-separate-client-secret
|
||||
|
||||
@@ -238,6 +238,35 @@ sudo journalctl -u oral-trainer-api -f
|
||||
|
||||
当前上传后的处理任务运行在 API 进程中,因此只能使用一个 Uvicorn worker。需要多机或多 worker 时,应把 `VideoProcessor.process` 迁移到 Celery、RQ 或其他持久化任务队列。
|
||||
|
||||
### 3A. 内网直连(可选)
|
||||
|
||||
默认 FastAPI 只监听 `127.0.0.1:8000`,由 nginx 对外提供访问。如果只想在可信内网
|
||||
(例如 `192.168.0.124` 这台虚拟机)直接上传,有两种方式:
|
||||
|
||||
方式一(推荐,不改后端):nginx 已监听 `0.0.0.0:80`,直接访问
|
||||
`http://192.168.0.124/admin` 或在浏览器上传即可,上传地址为
|
||||
`http://192.168.0.124/api/v1/admin/videos/raw`。
|
||||
|
||||
方式二(把 API 绑定到所有网卡):在 `sentence_api/.env` 增加一行:
|
||||
|
||||
```dotenv
|
||||
ORAL_TRAINER_BIND_HOST=0.0.0.0
|
||||
```
|
||||
|
||||
然后重建容器:
|
||||
|
||||
```bash
|
||||
cd /opt/oral-trainer/sentence_api
|
||||
docker compose up -d
|
||||
ss -tlnp | grep 8000 # 应显示 0.0.0.0:8000
|
||||
```
|
||||
|
||||
之后即可访问 `http://192.168.0.124:8000/healthz` 和内网上传接口。
|
||||
|
||||
安全提醒:`0.0.0.0` 会把 API 暴露给整个内网(管理接口受 `X-Admin-Key` 保护,但公开的
|
||||
视频列表和 `/admin` 页面没有密钥)。仅建议在可信内网使用;公网部署务必保持
|
||||
`127.0.0.1` + nginx,或用防火墙限制来源 IP。
|
||||
|
||||
## 4. 配置 Nginx(HTTP 回源)
|
||||
|
||||
本机 Nginx 只监听 80 端口提供 HTTP,不在本机终结 HTTPS。总出口(线上边缘网关)
|
||||
|
||||
@@ -7,7 +7,7 @@ services:
|
||||
network_mode: host
|
||||
env_file:
|
||||
- .env
|
||||
command: ["python", "-m", "uvicorn", "sentence_api.main:app", "--host", "127.0.0.1", "--port", "8000", "--workers", "1", "--proxy-headers", "--forwarded-allow-ips", "*"]
|
||||
command: ["python", "-m", "uvicorn", "sentence_api.main:app", "--host", "${ORAL_TRAINER_BIND_HOST:-127.0.0.1}", "--port", "8000", "--workers", "1", "--proxy-headers", "--forwarded-allow-ips", "*"]
|
||||
volumes:
|
||||
- ./data:/app/sentence_api/data
|
||||
healthcheck:
|
||||
|
||||
Reference in New Issue
Block a user