服务配置
2026/2/15大约 2 分钟hyperlanewebrustconfigServerConfighostportrequest_confignodelayttlconfig_from_jsonconfig
设置 监听地址
提示
hyperlane 框架监听地址方式如下:
let mut config: ServerConfig = ServerConfig::default();
config.set_address("0.0.0.0:80");提示
hyperlane 框架内部为 RequestConfig 生成了 get|get_mut|set 等方法。RequestConfig 是用于请求解析的安全配置结构体,定义了各种限制和约束以防止拒绝服务攻击和其他安全漏洞。
网络与缓冲区配置
| 属性 | 类型 | 说明 | 默认值 / 安全优先值 |
|---|---|---|---|
| buffer_size | usize | 读取操作的缓冲区大小。较大的值可能提高性能但会消耗更多内存。 | 8KB / 4KB |
| read_timeout_ms | u64 | 读取请求的超时时间(毫秒)。防止慢速攻击。 | 6000ms / 3000ms |
HTTP 请求行配置
| 属性 | 类型 | 说明 | 默认值 / 安全优先值 |
|---|---|---|---|
| max_path_length | usize | URL 路径部分的最大长度(如 "/api/v1/users")。不包括查询参数。 | 8KB / 4KB |
HTTP 头部配置
| 属性 | 类型 | 说明 | 默认值 / 安全优先值 |
|---|---|---|---|
| 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 |
默认配置
使用 RequestConfig::new() 或 RequestConfig::default() 获得平衡的默认值。
高安全配置
使用 RequestConfig::high_security() 获得更严格的安全限制,适用于高风险环境。
设置 nodelay
提示
hyperlane 框架支持配置 nodelay,该选项基于 Tokio 的 TcpStream::set_nodelay,用于控制 TCP_NODELAY 选项,以减少 Nagle 算法的影响,提高低延迟场景下的数据传输效率。
启用 nodelay
let mut server_config: ServerConfig = ServerConfig::default();
server_config.set_nodelay(Some(true));禁用 nodelay
let mut server_config: ServerConfig = ServerConfig::default();
server_config.set_nodelay(Some(false));设置 ttl
提示
hyperlane 框架支持配置 ttl,该选项基于 Tokio 的 TcpStream::set_ttl,用于控制 IP_TTL 选项,以设置传输数据包的生存时间(Time To Live),从而影响数据包在网络中的跳数限制。
let mut server_config: ServerConfig = ServerConfig::default();
server_config.set_ttl(Some(128));设置 request_config
提示
hyperlane 框架支持直接传入配置字符串。
let request_config_json: &'static str = r#"
{
"buffer_size": 8192,
"max_path_size": 8192,
"max_header_count": 100,
"max_header_key_size": 8192,
"max_header_value_size": 8192,
"max_body_size": 2097152,
"read_timeout_ms": 6000
}
"#;
let mut server: Server = Server::default();
let mut request_config: RequestConfig = RequestConfig::from_json(request_config_json).unwrap();
server.request_config(request_config);设置 server_config
let server_config_json: &'static str = r#"
{
"address": "0.0.0.0:80",
"nodelay": true,
"ttl": 64
}
"#;
let mut server: Server = Server::default();
let mut server_config: ServerConfig = ServerConfig::from_json(server_config_json).unwrap();
server.server_config(server_config);