bb3c5ef8
tangwang
灌入数据流程跑通
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
# 服务器修复和优化文档
## 修复的问题
### 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. **日志轮转**: 配置日志轮转防止磁盘满
## 维护说明
- 定期检查日志文件大小
- 监控服务器资源使用情况
- 更新依赖包版本
- 备份配置文件
|