SERVER_FIXES.md
3.38 KB
服务器修复和优化文档
修复的问题
1. 前端服务器问题 (scripts/frontend_server.py)
- 问题: 接收到大量扫描器流量导致的错误日志
- 原因: SSL/TLS握手尝试、RDP连接扫描、二进制数据攻击
- 解决方案:
- 添加错误处理机制,优雅处理连接断开
- 实现速率限制 (100请求/分钟)
- 过滤扫描器噪音日志
- 添加安全HTTP头
- 使用线程服务器提高并发处理能力
2. API服务器问题 (api/app.py)
- 问题: 缺乏安全性和错误处理机制
- 解决方案:
- 集成速率限制 (slowapi)
- 添加安全HTTP头
- 实现更好的异常处理
- 添加健康检查端点
- 增强日志记录
- 添加服务关闭处理
主要改进
安全性增强
- 速率限制: 防止DDoS攻击和滥用
- 安全HTTP头: 防止XSS、点击劫持等攻击
- 错误过滤: 隐藏敏感错误信息
- 输入验证: 更健壮的请求处理
稳定性提升
- 连接错误处理: 优雅处理连接重置和断开
- 异常处理: 全局异常捕获,防止服务器崩溃
- 日志管理: 过滤噪音,记录重要事件
- 监控功能: 健康检查和状态监控
性能优化
- 线程服务器: 前端服务器支持并发请求
- 资源管理: 更好的内存和连接管理
- 响应头优化: 添加缓存和安全相关头
使用方法
安装依赖
# 安装服务器安全依赖
./scripts/install_server_deps.sh
# 或者手动安装
pip install slowapi>=0.1.9 anyio>=3.7.0
启动服务器
方法1: 使用管理脚本 (推荐)
# 启动所有服务器
python scripts/start_servers.py --customer customer1 --es-host http://localhost:9200
# 启动前检查依赖
python scripts/start_servers.py --check-dependencies
方法2: 分别启动
# 启动API服务器
python main.py serve --customer customer1 --es-host http://localhost:9200
# 启动前端服务器 (在另一个终端)
python scripts/frontend_server.py
监控和日志
日志位置
- API服务器日志:
/tmp/search_engine_api.log - 启动日志:
/tmp/search_engine_startup.log - 控制台输出: 实时显示重要信息
健康检查
# 检查API服务器健康状态
curl http://localhost:6002/health
# 检查前端服务器
curl http://localhost:6003
配置选项
环境变量
CUSTOMER_ID: 客户ID (默认: customer1)ES_HOST: Elasticsearch主机 (默认: http://localhost:9200)
速率限制配置
- API服务器: 各端点不同限制 (60-120请求/分钟)
- 前端服务器: 100请求/分钟
故障排除
常见问题
依赖缺失错误
pip install -r requirements_server.txt端口被占用
# 查看端口占用 lsof -i :6002 lsof -i :6003权限问题
chmod +x scripts/*.py scripts/*.sh
调试模式
# 启用详细日志
export PYTHONUNBUFFERED=1
python scripts/start_servers.py
生产环境建议
- 反向代理: 使用nginx或Apache作为反向代理
- SSL证书: 配置HTTPS
- 防火墙: 限制访问源IP
- 监控: 集成监控和告警系统
- 日志轮转: 配置日志轮转防止磁盘满
维护说明
- 定期检查日志文件大小
- 监控服务器资源使用情况
- 更新依赖包版本
- 备份配置文件