MBE 公网部署指南(带密码保护)
将 MBE 服务发布到公网,使用 HTTP Basic Authentication 保护访问。
快速开始
1. 生成密码文件
cd mises-behavior-engine
python scripts/generate_auth_password.py
按提示输入用户名和密码(默认用户名为 admin)。
2. 启动服务
方式一:使用快速设置脚本(推荐)
.\scripts\setup_public_deploy.ps1
方式二:手动启动
docker-compose -f docker-compose.public.yml up -d
3. 访问服务
- 访问地址:
http://your-server-ip或http://your-domain.com - 需要输入: 用户名和密码(在步骤 1 中设置)
配置说明
端口配置
| 服务 | 端口 | 说明 |
|---|---|---|
| Nginx | 80 | HTTP 访问入口 |
| Nginx | 443 | HTTPS 访问入口(需配置 SSL) |
| API | 8000 | 仅内部访问,不暴露到宿主机 |
| Admin UI | 3000 | 仅内部访问,不暴露到宿主机 |
文件位置
| 文件 | 路径 | 说明 |
|---|---|---|
| Docker Compose | docker-compose.public.yml |
公网部署配置 |
| Nginx 配置 | config/nginx/nginx.public.conf |
Nginx 反向代理配置 |
| 密码文件 | config/nginx/.htpasswd |
HTTP Basic Auth 密码文件 |
用户管理
添加用户
python scripts/generate_auth_password.py
输入新的用户名和密码即可。
删除用户
手动编辑 config/nginx/.htpasswd,删除对应行:
admin:$apr1$...
user2:$apr1$...
删除 user2 那一行即可。
修改密码
重新运行密码生成脚本,使用相同用户名,输入新密码。
安全建议
1. 使用 HTTPS
配置 SSL 证书,启用 HTTPS:
- 将 SSL 证书放到
config/nginx/ssl/目录 - 修改
config/nginx/nginx.public.conf,取消注释 HTTPS server 块 - 更新证书路径
2. 强密码策略
- 至少 12 位字符
- 包含大小写字母、数字、特殊字符
- 定期更换密码
3. 防火墙配置
仅开放必要端口:
# Windows Firewall
New-NetFirewallRule -DisplayName "MBE HTTP" -Direction Inbound -LocalPort 80 -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "MBE HTTPS" -Direction Inbound -LocalPort 443 -Protocol TCP -Action Allow
4. 日志监控
定期检查 Nginx 访问日志:
docker logs mbe-nginx-public
或查看日志文件:
docker exec mbe-nginx-public tail -f /var/log/nginx/access.log
常用命令
启动服务
docker-compose -f docker-compose.public.yml up -d
停止服务
docker-compose -f docker-compose.public.yml down
查看日志
# 所有服务
docker-compose -f docker-compose.public.yml logs -f
# 特定服务
docker-compose -f docker-compose.public.yml logs -f nginx
docker-compose -f docker-compose.public.yml logs -f mbe-api
重启服务
docker-compose -f docker-compose.public.yml restart
查看服务状态
docker-compose -f docker-compose.public.yml ps
故障排除
问题:无法访问服务
检查步骤:
确认服务已启动:
docker-compose -f docker-compose.public.yml ps检查端口是否被占用:
netstat -ano | findstr :80查看 Nginx 日志:
docker logs mbe-nginx-public
问题:密码验证失败
检查步骤:
确认密码文件存在:
Test-Path config\nginx\.htpasswd检查密码文件格式:
Get-Content config\nginx\.htpasswd格式应为:
username:$apr1$...或username:$2y$...重新生成密码文件:
python scripts/generate_auth_password.py
问题:API 无法访问
检查步骤:
确认 API 容器健康:
docker ps | findstr mbe-api-public检查 API 日志:
docker logs mbe-api-public测试内部连接:
docker exec mbe-nginx-public wget -q -O- http://mbe-api:8000/api/health
与本地版本的区别
| 特性 | 本地版 (dev/prod) | 公网版 (public) |
|---|---|---|
| 端口暴露 | 直接暴露 API/UI | 仅暴露 Nginx (80/443) |
| 密码保护 | 无 | HTTP Basic Auth |
| 网络隔离 | 独立网络 | 独立网络 |
| 适用场景 | 本地开发/测试 | 公网访问 |
| 数据卷 | 独立数据卷 | 独立数据卷 |
更新服务
更新代码
重新构建镜像:
docker build -t mbe-api:latest . docker build -f admin-ui/Dockerfile -t mbe-admin-ui:latest admin-ui重启服务:
docker-compose -f docker-compose.public.yml up -d --force-recreate
更新配置
- 修改
config/nginx/nginx.public.conf - 重启 Nginx:
docker-compose -f docker-compose.public.yml restart nginx
文档位置:docs/PUBLIC_DEPLOYMENT.md