展览可配置的 HTTP/1 请求标题解析录用限制
作者: seonghobae创建于 2026年9月3日更新于 2026年9月12日
问题是什么?你的功能解决了什么问题,或满足了什么需求?在当前的 main(09696b51bc59315353d96686355861604d0bb48c)中,下游 HTTP/1 请求头的接收已在 pingora-core 中修复: - pingora-core/src/protocols/http/v1/common.rs 定义了 MAX_HEADERS = 256、INIT_HEADER_BUF_SIZE = 4096 和 MAX_HEADER_SIZE = 1_048_575。 - pingora-core/src/protocols/http/v1/server.rs 中的 HttpSession::read_request() 根据该固定上限扩展其解析器缓冲区。源代码中指出,大小检查发生在下一次读取之前,因此完成的大型套接字读取可能在拒绝之前就已经超过预期的阈值。 - HttpServerOptions 目前暴露了传输选项(如 h2c、保持活动请求限制和 H2 空闲超时),但没有 HTTP/1 请求头字节/数量接收限制设置。对于需要由操作员控制的头部预算明显低于内置上限的边缘代理,在 ProxyHttp::request_filter() 回调中拒绝太晚了,无法作为解析器/资源接收控制:请求头已经被缓存并解析了,在该回调之前。 HTTP/2 已经有了不同的控制面:default_h2_options() 应用了解码的头部列表限制,而 H2Options::max_header_list_size 可以自定义它。我并没有建议将 HTTP/1 线路/解析器字节和 HTTP/2 解码的头部列表大小视为相同的计算。
内容来源: cloudflare/pingora