可扩展 TLS 解包守护程序
它采用了一个进程-核心模型;父进程会生成 N 个子进程,每个子进程在一个共同的套接字上进行 accept() 操作,以将已连接的客户端分配给它们。在每个子进程中,异步套接字 I/O 通过 libev 和 OpenSSL 的非阻塞 API 在本地连接上进行。默认情况下,stud 对每个连接的开销为 ~200 KB - 它预先分配了一些缓冲区空间,用于在前端和后端之间传输的数据。
stud 具有极少的功能 - 它是专为与智能后端(如 haproxy 或 nginx)配合而设计的。 它与此后端处理程序保持严格的 1:1 连接模式,以便后端可以指定限流行为、最大连接行为、服务可用性等。
stud 可选择将客户端 IP 地址(根据是 IPv4 还是 IPv6)写入后端,或者使用 HAProxy 的 PROXY 协议提供该信息。 使用 PROXY 协议时,stud 还可以透明地将现有的 PROXY 头传递到明文流中。 如果在 stud 前面使用了 TCP 代理,则这种技术尤其有用。 使用这两种技术,关心客户端 IP 的后端仍然可以访问它,即使 stud 本身看起来是连接的客户端。
由于 Exceliance(HAProxy 后台开发团队)的 Emeric 的贡献,可以制作一个特殊的 stud 版本,它利用共享内存在所有子进程之间使用共享的会话缓存。 这可以通过避免客户端重新协商来加快大型 stud 部署的速度。
暂无开放 Issues,或尚未同步最近议题。