SERVER_FIXES.md 3.38 KB

服务器修复和优化文档

修复的问题

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. 响应头优化: 添加缓存和安全相关头

使用方法

安装依赖

# 安装服务器安全依赖
./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

配置选项

环境变量

速率限制配置

  • API服务器: 各端点不同限制 (60-120请求/分钟)
  • 前端服务器: 100请求/分钟

故障排除

常见问题

  1. 依赖缺失错误

    pip install -r requirements_server.txt
    
  2. 端口被占用

    # 查看端口占用
    lsof -i :6002
    lsof -i :6003
    
  3. 权限问题

    chmod +x scripts/*.py scripts/*.sh
    

调试模式

# 启用详细日志
export PYTHONUNBUFFERED=1
python scripts/start_servers.py

生产环境建议

  1. 反向代理: 使用nginx或Apache作为反向代理
  2. SSL证书: 配置HTTPS
  3. 防火墙: 限制访问源IP
  4. 监控: 集成监控和告警系统
  5. 日志轮转: 配置日志轮转防止磁盘满

维护说明

  • 定期检查日志文件大小
  • 监控服务器资源使用情况
  • 更新依赖包版本
  • 备份配置文件