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