服务配置
2026/1/14大约 3 分钟hyperlanewebrustconfigServerConfighostportrequest_confignodelayttlconfig_strconfig
设置 host
提示
hyperlane 框架绑定 host 方式如下:
let config: ServerConfig = ServerConfig::new().await;
config.host("0.0.0.0").await;设置 port
提示
hyperlane 框架绑定端口方式如下:
let config: ServerConfig = ServerConfig::new().await;
config.port(60000).await;设置 request_config
提示
hyperlane 框架设置请求配置方式如下:
let config: ServerConfig = ServerConfig::new().await;
config.request_config(RequestConfig::default()).await;提示
hyperlane 框架内部为 RequestConfig 生成了 get|get_mut|set 等方法。RequestConfig 是用于请求解析的安全配置结构体,定义了各种限制和约束以防止拒绝服务攻击和其他安全漏洞。
网络与缓冲区配置
| 属性 | 类型 | 说明 | 默认值 / 安全优先值 |
|---|---|---|---|
| buffer_size | usize | 读取操作的缓冲区大小。较大的值可能提高性能但会消耗更多内存。 | 8KB / 4KB |
| http_read_timeout_ms | u64 | 读取 HTTP 请求的超时时间(毫秒)。防止慢速攻击。 | 6000ms / 3000ms |
| ws_read_timeout_ms | u64 | 读取 WebSocket 帧的超时时间(毫秒)。 | 1800000ms / 900000ms |
HTTP 请求行配置
| 属性 | 类型 | 说明 | 默认值 / 安全优先值 |
|---|---|---|---|
| max_request_line_length | usize | HTTP 请求行最大长度(如 "GET /path HTTP/1.1")。防止过长的请求行攻击。 | 8KB / 4KB |
| max_path_length | usize | URL 路径部分的最大长度(如 "/api/v1/users")。不包括查询参数。 | 8KB / 4KB |
| max_query_length | usize | 查询字符串的最大长度("?" 之后的部分)。 | 8KB / 4KB |
HTTP 头部配置
| 属性 | 类型 | 说明 | 默认值 / 安全优先值 |
|---|---|---|---|
| max_header_line_length | usize | 单个头部行的最大长度(包括头部名和值)。 | 8KB / 4KB |
| max_header_count | usize | 允许的头部字段最大数量。防止使用数千个头部的内存耗尽攻击。 | 100 / 50 |
| max_header_key_length | usize | 头部键名的最大长度。 | 8KB / 4KB |
| max_header_value_length | usize | 头部值的最大长度。 | 8KB / 4KB |
请求体配置
| 属性 | 类型 | 说明 | 默认值 / 安全优先值 |
|---|---|---|---|
| max_body_size | usize | 请求体的最大大小(字节)。根据应用需求调整。 | 2MB / 1MB |
WebSocket
| 属性 | 类型 | 说明 | 默认值 / 安全优先值 |
|---|---|---|---|
| max_ws_frame_size | usize | WebSocket 帧的最大大小(字节)。 | 64KB / 32KB |
| max_ws_frames | usize | 单个请求中处理的 WebSocket 帧的最大数量。 | 6000 / 3000 |
默认配置
使用 RequestConfig::new() 或 RequestConfig::default() 获得平衡的默认值。
高安全配置
使用 RequestConfig::high_security() 获得更严格的安全限制,适用于高风险环境。
设置 nodelay
提示
hyperlane 框架支持配置 nodelay,该选项基于 Tokio 的 TcpStream::set_nodelay,用于控制 TCP_NODELAY 选项,以减少 Nagle 算法的影响,提高低延迟场景下的数据传输效率。
启用 nodelay
let config: ServerConfig = ServerConfig::new().await;
config.enable_nodelay().await;let config: ServerConfig = ServerConfig::new().await;
config.nodelay(true).await;禁用 nodelay
let config: ServerConfig = ServerConfig::new().await;
config.disable_nodelay().await;let config: ServerConfig = ServerConfig::new().await;
config.nodelay(false).await;设置 ttl
提示
hyperlane 框架支持配置 ttl,该选项基于 Tokio 的 TcpStream::set_ttl,用于控制 IP_TTL 选项,以设置传输数据包的生存时间(Time To Live),从而影响数据包在网络中的跳数限制。
let config: ServerConfig = ServerConfig::new().await;
config.ttl(128).await;设置 config_str
提示
hyperlane 框架支持直接传入配置字符串。
let config_str: &'static str = r#"
{
"host": "0.0.0.0",
"port": 80,
"request_config": {
"buffer_size": 8192,
"max_request_line_length": 8192,
"max_path_length": 8192,
"max_query_length": 8192,
"max_header_line_length": 8192,
"max_header_count": 100,
"max_header_key_length": 8192,
"max_header_value_length": 8192,
"max_body_size": 2097152,
"max_ws_frame_size": 65536,
"max_ws_frames": 6000,
"http_read_timeout_ms": 6000,
"ws_read_timeout_ms": 1800000
},
"nodelay": true,
"ttl": 64
}
"#;
server.config_str(config_str).await;设置 config
let config_str: &'static str = r#"
{
"host": "0.0.0.0",
"port": 80,
"request_config": {
"buffer_size": 8192,
"max_request_line_length": 8192,
"max_path_length": 8192,
"max_query_length": 8192,
"max_header_line_length": 8192,
"max_header_count": 100,
"max_header_key_length": 8192,
"max_header_value_length": 8192,
"max_body_size": 2097152,
"max_ws_frame_size": 65536,
"max_ws_frames": 6000,
"http_read_timeout_ms": 6000,
"ws_read_timeout_ms": 1800000
},
"nodelay": true,
"ttl": 64
}
"#;
let config: ServerConfig = ServerConfig::from_str(config_str).unwrap();
server.config(config).await;