这是 Apache Tomcat 连接器的更新日志。此更新日志(尚)不包含 Tomcat 连接器的所有更新和修复。它应该只包含自 2004 年 11 月 10 日,即 JK 新文档项目启动以来所做的修复。
更新日志
前言
1.2.49 到 1.2.50 之间的更改
Apache
68117: 修复 1.2.49 中引入的用于减少符号可见性的新 libtool 标志的拼写错误。同时改进了 Makefile 中的转义。补丁由 lzsiga@freemail.c3.hu 提供。(rjung)
改进了非 Windows 平台上的共享内存处理。(rjung)
IIS
将 ISAPI 重定向器捆绑的 PCRE 更新到 8.45。(rjung)
通用
#8: 修复 musl 上的编译问题。补丁由 conrad+github@kostecki.com 提供。(rjung)
从 https://git.savannah.gnu.org/git/config.git 更新 config.guess 和 config.sub。(rjung)
1.2.48 到 1.2.49 之间的更改
Apache
IIS
将默认请求 ID 设置为 GUID。也可以通过配置 "request_id_header" 从任意请求头中获取。(rjung)
修复了 Translate 头部的非空检查。(rjung)
通用
文档
删除了对 Netscape / Sun ONE / Oracle iPlanet Web Server 的支持,因为该产品已停止维护。(markt)
删除了指向旧 JK2 文档的链接。JK2 文档仍然可用,只是不再从当前 JK 文档中链接。(markt)
从 1.2.45 版本开始重新组织了更新日志的子章节。(rjung)
1.2.47 到 1.2.48 之间的更改
IIS
更新了安装操作指南,移除了不再支持的 Windows 版本,并添加了 Windows Server 2019。(markt)
1.2.46 到 1.2.47 之间的更改
Apache
扩展了方法进入/退出时的跟踪级别日志,以帮助调试请求映射问题。(markt)
修复了规范化检查中的一个错误,该错误阻止了基于文件的请求(例如 SSI 文件包含)被处理。(markt)
63214: 使用
JkAutoAlias
时,确保名称中包含空格的文件可访问。(markt)
通用
更新了文档,以反映 Apache Tomcat 连接器的源代码已从 Subversion 迁移到 Git。(markt)
64051: 使用
set_session_cookie
时,如果负载均衡器需要故障转移到不同的工作器,确保发出更新的会话 cookie。(markt)从 https://git.savannah.gnu.org/git/config.git 更新 config.guess 和 config.sub。(markt)
更新了迁移到 git 的发布脚本。(rjung)
1.2.45 到 1.2.46 之间的更改
Apache
62751: 修复 1.2.44 中的回归问题,该问题导致在提供 poll() 的平台上,socket_connect_timeout 被解释为秒而不是毫秒。(rjung)
1.2.44 到 1.2.45 之间的更改
Apache
更新了文档,指出了 JkAutoAlias 指令的额外限制。(markt)
改进了路径参数处理,以便
JkStripSession
可以从 URI 的任何段(而不仅仅是最终段)中指定的路径参数中删除会话 ID。(markt)
IIS
改进了路径参数处理,以便
strip_session
可以从 URI 的任何段(而不仅仅是最终段)中指定的路径参数中删除会话 ID。(markt)
通用
62689: 修正 1.2.44 中导致
OPTIONS *
请求处理中断的回归问题。(rjung)优化了路径参数处理。(rjung)
改进了路径参数解析,以便可以从 URI 的任何段(而不仅仅是最终段)中提取负载均衡工作器的
session_path
工作器属性指定的会话 ID。(markt)
1.2.43 到 1.2.44 之间的更改
原生
移除了 Novell Netware 的 make 文件和 Netware 特定的源代码,因为五年多以来都没有支持的 Netware 版本可用。(markt)
57946: Apache: 更新文档以使用 httpd 2.4.x 风格的访问控制指令。(markt)
58287: 通用: 在 Windows 上使用本地(而非全局)互斥体,以更好地支持多用户环境。(markt)
59897: Apache: 使用 poll 而非 select 以避免 select 触发 httpd 崩溃的限制。补丁由 Koen Wilde 提供。(markt)
60745: ISAPI: 移除了拒绝包含与 WEB-INF 或 META-INF 匹配的路径段的请求的检查,因为它与 Tomcat 执行的检查重复,并且由于 ISAPI 无法看到当前上下文路径,因此无法在不拒绝有效请求的情况下实现此检查。(markt)
澄清了当所有 ajp13 工作器失败时 lb 工作器的行为,特别提到了 retries 属性的作用。(markt)
62408: 添加了新的负载均衡工作器属性 lb_retries 以改善对重试次数的控制。基于 Frederik Nosi 提供的补丁。(markt)
将请求 URI 的规范化重构到公共位置,并使 mod_jk 的规范化实现与 Tomcat 中实现的规范化保持一致。(markt)
在文档中添加了注释,由于为与 Tomcat 中的规范化保持一致所做的更改,CollapseSlashes 选项现在实际上已硬编码为 CollpaseSlashesAll。(markt)
将 ISAPI 重定向器捆绑的 PCRE 更新到 8.42。(rjung)
从 https://git.savannah.gnu.org/git/config.git 更新 config.guess 和 config.sub。(rjung)
1.2.42 到 1.2.43 之间的更改
原生
61733: LB: 正确地将状态工作器应用的负载因子更改传播到所有进程的负载均衡器子工作器。基于 Jonathan Oddy 提供的补丁。(rjung)
ISAPI: 调整 32 位和 64 位构建的 make 文件。(markt)
从 http://git.savannah.gnu.org/cgit/config.git 更新 config.guess 和 config.sub。(rjung)
将 ISAPI 重定向器捆绑的 PCRE 更新到 8.41。(rjung)
更新了 ISAPI 重定向器安装文档,以反映当前支持的 Windows 版本。(markt)
使 ISAPI 重定向器执行的规范化与 Tomcat 中实现的规范化保持一致。(markt)
1.2.41 到 1.2.42 之间的更改
原生
状态: 修复了当 AJP 工作器未与负载均衡工作器一起使用时,从后端读取和写入的字节数显示不正确的问题。(rjung)
Apache: 如果在早期处理阶段从客户端读取请求正文已经失败,则在清理期间不要尝试读取剩余的请求正文部分。(rjung)
57485: Apache: 将从客户端读取请求正文的错误传播到 mod_jk,以便 Tomcat 看到错误而不是截断的正文。(markt)
57836: ISAPI: 空的 REMOTE_USER 不应翻译为 ""。(rjung)
58249: 在文档中添加注释,如果指定的值不是 1024 的倍数,则 max_packet_size 将对齐到下一个 1024 的倍数。(markt)
58309: ISAPI: 将捆绑的 pcre 从 5.0 版本更新到 8.38。(rjung)
58286: 修复 mod_jk 和 ISAPI Redirector 中的崩溃。此崩溃仅在 Windows 上获取 HTML 格式的 jk-status(默认格式)时发生。此回归是由 54177 的修复引入的。(rjung)
58285: 不要在 GCC 不提供原子实现的平台上使用 GCC 原子。此回归是由 44454 和 56703 的修复引入的。(rjung)
58425: 修复 1.2.41 中阻止 AJP 1.2 工作器初始化的回归问题。请注意,AJP 1.2 协议已弃用。补丁由 yagisita 提供。(markt)
58504: 如果使用后台线程执行工作器维护,请确保维护运行不会被跳过。补丁由 Hiroto Shimizu 提供。(markt)
58608: ISAPI: 添加了一个新的注册表选项 "flush_packets",允许控制 IIS7+ 的刷新行为。默认不刷新。将选项设置为 "true" 将导致 IIS 在收到每个 AJP 数据包时将数据写入客户端。(markt)
58813: ISAPI: 正确释放互斥体,允许插件完成初始化。在此修复之前,不完整的初始化导致关机时挂起。补丁由 Matthew Reiter 提供。(markt)
58895: 纠正了与后端服务器通信尝试次数的日志消息中的差一错误。补丁由 Hiroto Shimizu 提供。(markt)
59164: 修复了如果为无法解析为主机名的工作器指定了主机名,则在首次连接时崩溃的问题。(markt)
59184: HTTPD: 如果 mod_jk 配置了无效的 JkShmFile 值,则避免分段错误。这会导致服务器启动失败。(markt)
次要代码清理和优化。(markt)
1.2.40 到 1.2.41 之间的更改
原生
AJP, LB: 减少维护功能期间的锁竞争。在使用大量 AJP13 和 LB 工作器时,尤其与 Apache httpd prefork MPM 结合使用时,可以观察到这一点。(rjung)
57060: 允许从源代码树外部构建。补丁由 Petr Sumbera 贡献。(rjung)
56703: 状态: 修复了当前后端连接数的膨胀计数器,尤其是在后端发生连接超时时。(rjung)
56661: 修复 Servlet API getLocalAddr()。适用于 Tomcat 6.0.42、7.0.55 和 8.0.11 以及 Apache 和 ISAPI 插件。(rjung)
状态: 更改工作器属性时记录旧值和新值。(rjung)
56667: 状态: 修复更改所有成员激活状态时的日志消息。(rjung)
56565: 修复非双网络堆栈上的 IPV6 地址解析。(mturk)
50511: 将 "OPTIONS *" 请求的日志级别从警告降低到调试。(rjung)
Apache: 复制日志注释而不是使用引用,以防止访问已关闭池中的内存。(rjung)
添加选项以控制在挂载和卸载中处理多个相邻斜杠。新的默认设置是仅在卸载时折叠斜杠。配置通过 Apache 的新 JkOption("CollapseSlashesAll"、"CollapseSlashesNone" 或 "CollapseSlashesUnmount")和 IIS 的属性 "collapse_slashes"(值 "all"、"none"、"unmount")完成。这是对 CVE-2014-8111 的修复。(rjung)
增加了对共享内存分配的更多检查。(rjung)
56869: 状态: 向状态工作器添加了最大打开后端连接数。补丁由 Martin Knoblauch 贡献。(rjung)
56770: AJP: 将工作器名称添加到所有日志消息中。补丁由 Martin Knoblauch 贡献。(rjung)
50186: 文档: 澄清了 Tomcat AJP 连接器配置中 "connection_pool_timeout" 与 "keepAliveTimeout" 或 "connectionTimeout" 之间的关系。(rjung)
52334: LB: 在首次恢复尝试后,根据上次恢复尝试时间而不是原始错误时间计算工作器恢复时间。(rjung)
54596 第 1 部分: IIS: 修复了从配置中解析不带 ".." 目录组件的相对文件名时丢失最后一个字符的问题。(rjung)
54596 第 2 部分: IIS: 修复了在配置中使用 ".." 路径段的相对文件名时,路径段向上超出相对文件名的起始点的问题。(rjung)
状态: 添加了日志记录,如果状态工作器输出因缓冲区大小不足而被丢弃。(rjung)
将日志缓冲区从 8KB 减少到 1KB。添加了日志记录以防日志记录失败,并为可能被截断的行添加了尾随的 "..."。(rjung)
将 fail_on_status 的固定分配 32 个条目替换为动态分配。(rjung)
强制执行工作器属性 "name"、"host"、"route"、"domain"、"redirect"、"session_cookie"、"session_path" 和 "set_session_cookie" 的最大长度 "60" 的实现限制。已在配置文件处理和通过状态工作器更新配置中添加了检查。(rjung)
52483: Apache: 添加了 JkOptions 配置处理结果的调试日志。(rjung)
54177: 状态: 使用数字时间戳而不是文本时间戳,以避免非格式良好的 XML 输出。文本时间戳根据区域设置格式化,将其重新编码为 UTF-8 将很麻烦。(rjung)
56618: 状态: 读取查询字符串参数时使用百分比解码。例如,这修复了客户端将 ":" 编码为 "%3A" 时通过状态工作器编辑 IPv6 地址的问题。补丁由 Christopher Schultz 贡献。(rjung)
56452: 修复 IPv6 地址调试日志中的崩溃。补丁由 Christopher Schultz 贡献。(rjung)
34526: Apache: 改进与 mod_deflate 请求正文膨胀的兼容性。未实现 mod_deflate 膨胀的自动检测。请改用新的 Apache 环境变量 JK_IGNORE_CL,让 mod_jk 忽略现有的 Content-Length 请求头。(rjung)
44454: LB: 在文档中添加关于 "busyness" 负载均衡方法的警告。(rjung)
44454: 通过使用原子操作改进忙碌计数器。(rjung)
56703: 状态: 改进连接计数器。对 mod_jk (Apache) 使用原子操作并正确计算子进程停止时关闭的连接。(rjung)
44571: 确保如果无法为工作器获取端点,则返回状态 503。(rjung)
Apache: 改进优雅重启或正常重启期间的日志处理。(rjung)
在使用 CPing 可选检查空闲连接期间,不要更新工作器连接的最后访问时间。更新时间戳会中断空闲连接的关闭。(rjung)
调整连接关闭期间使用的 linger 参数。(rjung)
修复基于 configure 构建时 autoconf PACKAGE 定义的恼人的重定义警告。(rjung)
状态: 使用多行表头并修复无效的 xml 输出。(rjung)
44571: 为工作器实现并发请求的可选限制(属性 "busy_limit")。原始补丁由 zealot0630 at gmail dot com 贡献。(rjung)
将日志消息 "all endpoints are disconnected" 更正为 "no usable connection found, will create a new one"。对于常见情况,将信息日志级别降至调试级别。(rjung)
57536: AJP: 允许配置连接源地址。这应该只在多宿主主机上使用。该功能是实验性的。(rjung)
57540: AJP: 转发用于处理请求的 SSL 协议名称 (SSLv3, TLSv1, TLSv1.1, TLSv1.2)。(rjung)
1.2.39 到 1.2.40 之间的更改
1.2.37 到 1.2.39 之间的更改
原生
弃用 Apache Tomcat Connectors 中的 nt_service。(mturk)
56133: 修复了当请求在传输请求体到后端时失败且设置了 reply_timeout 时可能发生的崩溃。补丁由 Hiroto Shimizu 贡献。(rjung)
修复了状态工作器未更新所有成员参数的问题。(mturk)
55853: HTTPD: 使用正确的 API 设置 Content-Length。补丁由 areese yahoo-inc.com 贡献。(rjung)
添加了 IPV6 对 Web 服务器连接的支持。新增指令 prefer_ipv6 用于控制主机名解析并保留向后兼容性。(mturk)
添加了 --disable-sock-cloexec 到 configure 以禁用 SOCK_CLOEXEC 的使用(改为使用 FD_CLOEXEC + fnctl),以便构建的模块可以在 2.6.27 之前的 Linux 内核上工作。(timw)
清理了配置文件解析。工作器名称现在限制为 60 字节。(rjung)
允许在 Web 框架破坏 Tomcat 将路由 ID 添加到 JSESSIONID cookie 末尾的情况下设置粘性 cookie。(rjung)
max_packet_size 也用于请求正文转发。(rjung)
Apache 2.4: 默认情况下,转发 mod_remoteip 提供的逻辑客户端地址。当设置 JkOptions ForwardPhysicalAddress 时,mod_jk 将转而转发物理对等地址。(rjung)
次要文档改进。(rjung)
1.2.36 到 1.2.37 之间的更改
原生
修复了当工作器同时定义为负载均衡器成员和独立工作器时可能导致 Web 服务器崩溃的回归问题。(mturk)
如果指定了调试日志级别但不存在会话标识符,则修复了核心问题。(mturk)
1.2.35 到 1.2.36 之间的更改
原生
使用命名共享内存对象,以便我们保留运行时配置的数据,而不是在每次子进程创建时重置。(mturk)
修复了因未在关闭时释放互斥锁而导致的死锁。(mturk)
修复了 HTTPD 1.3 的 mod_jk 编译问题。(rjung)
46893: HTTPD 1.3: 对 HTTPD 1.3 应用修复。对于 HTTPD 2.x,已在 1.2.30 版本中修复。(rjung)
HTTPD 1.3: 允许设置执行 JkStripSession 时使用的路径参数。对于 HTTPD 2.x,此功能自 mod_jk 1.2.27 起已可用。(rjung)
1.2.33 到 1.2.35 之间的更改
1.2.32 到 1.2.33 之间的更改
原生
52793: AJP: 修复转发工作器激活状态的默认值。由 Yoshihito Fukuyama 贡献。(rjung)
HTTPD: 通过使用 client_* 而非 remote_* 变量来改进对 HTTPD 2.4 的支持。(rjung)
52564: 修复使用格式检查 gcc 安全强化 cflags 构建时的问题。由 Tony Mancill 贡献。(rjung)
52567: 均衡器成员在恢复状态下如果空闲,可能会切换回错误状态。(rjung)
如果无法加载 URI workermap 文件,则记录错误,并改进 IIS 上不可读工作器文件的日志记录。(timw)
移除了已弃用的 JNI 工作器和对 Java SDK 的构建依赖。(mturk)
51253: 使用服务器生成的错误页面时转发 WWW-Authenticate 头 (rjung, mturk)。
46406: IIS: 支持配置中的相对路径。路径被假定为相对于 isapi_redirect.dll。(mturk)
50233: 不对 URI 大小使用硬性限制 (mturk)。
IIS: 使用 Windows Server 2003 SP1、Windows XP SP2 作为支持的最低版本。(mturk)
47038: 修复使用 --enable-flock 配置时的编译器警告。(rjung)
51326: URI 映射: 添加 "session_cookie" 和 "session_path" 规则扩展。由 Eiji Takahashi 贡献。(rjung)
51333: IIS: 记录 64 位环境的配置要求。(rjung)
51743: HTTPD: 支持在使用环境变量(例如 JK_WORKER_NAME)定义请求工作器时的规则扩展。(rjung)
51769: IIS: 允许包含 "META-INF" 或 "WEB-INF" 的 URI,只要它们不是 URI 的路径组件。(rjung)
52056: HTTPD: JK 请求日志不总是记录正确的响应状态。通过重构 JK 请求日志以使用标准请求日志钩子来修复。(rjung)
HTTPD: 允许使用环境变量 JK_ROUTE 选择一个粘性工作器。这可以在会话和路由以非标准方式随请求发送时使用。(rjung)
URI 映射: 向 URI 工作器映射添加 "sticky_ignore" 扩展属性。它允许为单个挂载禁用粘性。(rjung)
HTTPD: 允许使用环境变量 JK_STATELESS 动态禁用粘性。这对于登录表单等非粘性请求打破 cookie 粘性可能很有用。(rjung)
LB: 新的均衡方法 "Next" 以循环方式分发会话。(rjung)
LB: 向状态工作器和 HTTPD 备注添加了创建会话的计数器。它实际上计算了不带会话 ID 的请求数量。(rjung)
URI 映射: 向 URI 工作器映射添加 "stateless" 扩展属性。这可以改进会话负载均衡。(rjung)
HTTPD: 允许使用环境变量 JK_STATELESS 动态切换请求到 "stateless"。(rjung)
AJP: 改进了请求不适合 AJP 数据包时的日志记录。(rjung)
1.2.31 到 1.2.32 之间的更改
原生
51417: 修复了通过查询工作器端点进行工作器忙碌检测的问题。废弃的连接可能导致工作器处于忙碌状态而未递减忙碌计数器。(mturk)
50339: 修复解析属性列表时的空白字符修剪问题。(rjung)
41263: 支持 Servlet API getRemotePort()。适用于 Tomcat 5.5.28、6.0.20 和 7.0.0 以及 Apache 和 ISAPI 插件。(rjung)
41923: AJP: 当指定 recovery_options 4 时,在客户端写入错误时关闭到 Tomcat 的 AJP 连接,中止 Tomcat 侧的响应写入。(timw)
AJP: 将关闭 AJP 套接字时将读取的残余字节数限制为 32k,以防止客户端在大响应体上中止时 Web 服务器 CPU 飙升。还将总残余时间减少到 2 秒。(timw)
50839: AJP: 修复了由于残余字节计数不正确导致在客户端中止响应写入期间忙碌循环而导致的 30 秒 CPU 峰值。修复了 1.2.31 中的回归问题。(timw)
LB: 将工作器激活状态作为请求属性 "JK_LB_ACTIVATION" 转发。可能的值为 "ACT"(活动)、"DIS"(禁用)和 "STP"(停止)。(rjung)
HTTPD: 当状态为 401 且使用服务器生成的错误页面时,转发来自后端的 WWW-Authenticate。(rjung)
50363: IIS: 防止 204、205 和 304 响应的空消息体进行分块编码。(timw)
50975: IIS: 修复了当请求中也存在 Content-Length 头时,Transfer-Encoding: chunked 请求挂起的问题。还解决了 IIS 在原始请求中没有 Content-Length 头时,似乎为小块编码请求创建 Content-Length 头的情况。(timw)
47679: IIS: 阻止当 ISAPI 重定向器用作扩展而未安装相应过滤器时请求头的截断。(timw)
NSAPI: 对响应使用小写头部名称。否则,Web 服务器可能会在我们的内容长度头部之外添加分块传输编码头部。
文档: 改进了负载均衡器文档。(rjung)
1.2.30 到 1.2.31 之间的更改
原生
49413: AJP13: 丢弃响应完成之后后端发送的刷新包。(rjung)
AJP: 记录本地和远程套接字地址。(mturk)
看门狗: 将维护工作器移到临界区之外,允许其他线程在维护期间使用连接池。(mturk)
通用: 在 init 日志消息中添加 svn 版本。(rjung)
通用: 在跟踪日志记录期间不要销毁 errno。(rjung)
Apache: 添加对 Apache 2.3/2.4 的支持。(rjung)
Apache: 为 Windows 上的 mod_jk.so 添加了版本号资源。(timw)
48501: IIS: 为 ISAPI 重定向器添加了 rotatelogs 风格的日志轮换。(timw)
38895: IIS: 默认情况下使用 RAW 头部而不是 CGI 头部,以防止头部名称中下划线 '_' 转换为连字符 '-'。可以通过定义 USE_CGI_HEADERS 启用旧行为。(timw)
49511: IIS: 当 keep-alive 连接上的后续请求未映射到 ISAPI 重定向器时,不要覆盖 IIS 日志信息。(timw)
文档: 记录 SSL 信息转发所需的 SSLOptions。(rjung)
文档: 语法和样式改进以及关于 IIS 提供静态内容的澄清。补丁由 André Warnier 提供。(rjung)
文档: 更新文档中使用的 subversion 路径。(rjung)
1.2.28 到 1.2.30 之间的更改
原生
Apache: 改进与 Apache 2.3 的兼容性。(rjung)
46632: Apache: 不要为我们的池注册子清理。(mturk)
46893: Apache: 仅当配置中实际设置了 JkShmSize 时才记录警告。(mturk)
IIS: 包含可选的分块支持。默认关闭。(mturk)
48763: IIS: 使用分块编码或长度大于 4GB 时,不发送 Content-Length。(mturk)
48223: IIS: 将正确的后端错误代码传播到 IIS。(rjung)
47867: IIS: 启动时崩溃,当使用 VS2008 编译且 workers.properties 包含不支持的属性时。补丁由 Indrek Juhani 提供 (rjung)
47628: IIS: 修复因未释放关键区锁而导致的应用程序池重启死锁。补丁由 Bret Prucha 提供。(mturk)
IIS/NSAPI: 更正每行后的日志文件刷新。(mturk)
NSAPI: 添加 Microsoft Visual C++ Makefile。(mturk)
AJP: 改进套接字关闭处理。(mturk)
AJP: 确保我们从不重复使用不可重复使用的套接字。(mturk)
AJP: 在等待 cpong 时容忍一个多余的数据包。(mturk)
AJP: 更严格地检查协议正确性。(mturk)
48410: AJP: 使用 poll 而非 select,以便我们可以处理超过 1024 个套接字。(mturk)
46503: AJP/状态: 工作器域和路由中的垃圾数据。(mturk)
48276: AJP: 当工作器联系无法解析时,将工作器标记为禁用,而不是导致服务器启动失败。(mturk)
48169: AJP: 通过在 EXEC 期间关闭所有套接字来改进 CGI 互操作性。(mturk)
状态: 向状态工作器添加了打开后端连接数。此功能是实验性的,显示的值可能不准确。(mturk)
47224: 状态: 当地址更改时,使端点缓存中所有已打开的套接字失效。这将导致使用新地址打开新的后端连接。(mturk)
48305: 状态: 在执行 dump 时不显示 "secret" 属性。(mturk)
45610: 状态: 不接受子工作器参数值为空的请求。(rjung)
45610: 状态: 修复了通过状态工作器更新其他负载均衡器属性时,错误地取消设置 sticky_session 和 sticky_session_force 的问题。(rjung)
47222: 状态: 将 ping_timeout 添加到共享内存并允许动态配置。(mturk)
状态: 移除了负载均衡器中 AJP13 工作器属性视图中重复的 "errors" 行。(rjung)
LB: 修复路由日志记录。(rjung)
日志记录: 自动检测用于日志记录的线程 ID 大小。(rjung)
日志记录: 在定义 JK_LOG_LOCKING 时,为 Windows 添加可选的日志文件锁定。(mturk)
配置: 更新了示例配置。(rjung)
文档: 更新了创建发布所需的工具信息。(rjung)
47983: 文档: 修复了示例配置中导致启动中断的拼写错误。(rjung)
构建: 强制复制 automake 文件。(rjung)
构建: Tomcat 代码库结构清理反映在文档和构建脚本中。(rjung, mturk)
1.2.27 到 1.2.28 之间的更改
原生
Apache: 添加更多环境变量以覆盖请求信息。在 Apache 前有代理并发送原始请求信息(例如通过自定义头部)时很有用。(rjung)
Apache: 不再预分配 JK 请求日志的条目。(rjung)
46352: Apache: 修复在使用 SetHandler jakarta-servlet 的 VHost 中没有 JkMount 时的崩溃。由于挂载扩展初始化不正确导致崩溃。(rjung)
Apache: JkWatchdogInterval 的间隔计算错误,导致看门狗间隔比配置值高 10 倍。(mturk)
Apache: 默认激活 SSL 密钥大小的转发。(rjung)
46169: Apache 1.3: 后向移植 use_server_errors 挂载扩展。(rjung)
46763: Apache 2.0: 在优雅重启期间保留日志互斥锁。补丁由 Eiji Takahashi 提供。(mturk)
46416: Windows 上的 Apache 2.0: 即使 apr 不包含 mstcipip.h 也包含它。(mturk)
IIS: 定期更新 uriworkermap.properties 文件。这需要同时定义 worker_mount_reload 和 watchdog_interval。(mturk)
IIS: 从注册表文件中删除过时的条目。(mturk)
46579: IIS: 使用本地环境变量表而不是环境变量来设置 JKISAPI_PATH 和 JKISAPI_NAME。(mturk)
LB: 添加新的属性 error_escalation_time,以微调本地错误升级为全局错误的时间。(rjung)
LB: 如果粘性会话亲和性标记包含点,则将点之前的部分视为域名。这允许实现具有域故障转移的完全节点会话亲和性。(mturk)
LB: 使强制恢复适用于本地错误状态。(rjung)
LB: 仅当我们确实有新状态时才更新错误状态和错误时间。(rjung)
LB: 当达到 max_reply_timeouts 或 fail_on_status 触发硬错误时,将全局工作器状态设置为错误。(rjung)
AJP: 添加新的错误类型 JK_AJP_PROTOCOL_ERROR。(mturk)
AJP: 允许工作器端口低于或等于 1024。(rjung)
AJP: 改进了一些 AJP 错误日志消息。(mturk)
状态: 允许更改 AJP 工作器的工作器地址和端口。地址将在该工作器的下一个请求中解析。(mturk)
状态: 允许更新操作在结果页面中显示错误消息。(rjung)
状态: 重构更新操作。(rjung)
状态: 如果操作期间发生错误,则不重定向到显示或列表页面。(rjung)
状态: 在显示中包含错误时间。(rjung)
状态: 从工作器显示中删除冗余的端口信息。重命名地址列并从图例中删除其解释。(rjung)
状态: 优化强制 uriworkermap.properties 重新加载。(mturk)
状态: 修复文本显示中的崩溃。(rjung)
状态: 显示 - 编辑 - 显示总是以单个 lb 成员显示结束,即使是从所有成员 lb 显示开始的。(rjung)
状态: 子工作器名称中的通配符在更新操作中失效。(rjung)
状态: 添加 use_server_errors 到映射显示。(rjung)
SHM: 将锁定移到数据拉取和推送方法中。(rjung)
JNI: 弃用 JNI 工作器。(rjung)
Netware: 缺少 MAX_PATH 的定义。补丁由 Guenter Knauf 提供。(rjung)
文档: 添加了关于反向代理的新操作指南页面。(rjung)
文档: 向超时文档添加了本地错误状态的解释。(rjung)
文档: 澄清了 socket_timeout 和 socket_connect_timeout 之间的关系。(rjung)
文档: 澄清了 IIS URL 重写功能。(rjung)
46834,46734: 文档: 修复了一些缺失或损坏的链接。(markt,rjung)
文档: 将 2008 年新闻添加到主页和菜单。(mturk, rjung)
1.2.26 到 1.2.27 之间的更改
原生
46109: 即使 lb 方法是 busyness,也衰减 reply_timeouts。在强制恢复期间也重置 reply_timeouts。(rjung)
AJP13: 如果之前的请求未完成,则回收连接。(mturk)
维护不应并行多次运行。(mturk)
Apache: 修复重启期间的小内存泄漏。(mturk)
改进了套接字关闭期间的信号处理。(mturk)
URI 映射: 为 URI 工作器映射添加调试转储功能。(rjung)
为非发布构建添加版本号到版本信息中。(rjung)
IIS: 可选地允许对响应进行分块编码。目前仅在定义 ISAPI_ALLOW_CHUNKING 时可用。基于 Tim Whittington 的补丁。(rjung)
IIS: 可选地使用原始头部而不是 CGI 头部。修复了头部名称中 "下划线=破折号" 的问题。目前仅在定义 USE_RAW_HEADERS 时可用。(rjung)
IIS: 可选地改进 IIS 5.1 兼容性。目前仅在定义 AUTOMATIC_AUTH_NOTIFICATION 时可用。基于 Tim Whittington 的补丁。(rjung)
IIS: 修复了由于多个线程并行初始化导致的内存损坏。(rjung)
Windows: 使用非默认套接字保持活动间隔。(mturk)
IIS: 添加环境变量 JKISAPI_PATH 和 JKISAPI_NAME。(mturk)
添加了 socket_connect_timeout 指令,用于设置套接字的连接超时。这使得可以拥有较低的连接超时但较高的操作超时。(mturk)
AJP13: [CVE-2008-5519] 即使客户端在发送请求后但在提供 POST 数据之前断开连接,也始终发送初始 POST 包。在这种情况下,或者在客户端在读取过程中中断连接的情况下,发送一个零大小的包通知容器客户端连接已断开。(mturk)
AJP13: 添加了 connection_acquire_timeout 指令,用于设置工作器等待空闲端点的绝对超时时间。(mturk)
Apache: 允许设置执行 JkStripSession 时使用的路径参数。(mturk)
重构了重试实现并更改了重试属性的语义。(mturk)
状态: 允许仅显示负载均衡器的一个成员。(rjung)
状态: 添加了上次统计信息重置以来的秒数以及访问和传输速率的显示。(rjung)
AJP13: 添加了一个可配置的 retry_interval 时间。(rjung)
文档: 增强了 connection_pool_size 的描述。(rjung)
IIS: 重构了错误页面生成。(mturk)
IIS: SERVER_NAME 变量在多个不同的服务器实例中可能相同,如果请求是根据 IP:端口组合处理的。改用请求所属的 INSTANCE_ID 变量。(mturk)
允许转发服务器错误页面。这可以通过新的 use_server_errors 扩展按 URI 进行。(mturk)
添加了 session_cookie 和 session_path 用于配置默认会话标识符。(mturk)
max_packet_size 也用作 TCP 发送和接收缓冲区大小。(mturk)
Apache: 如果 mod_jk 仅为单线程服务器(prefork)构建,则不允许 Apache 以多线程模式启动。(mturk)
45812: 对于 Apache httpd 2.x,如果从后端收到空的原因短语,则添加 "Unknown Reason" 作为原因短语。否则 httpd 2.x 将返回状态 500。(mturk)
添加了 connection_ping_interval、ping_timeout 和 ping_mode 指令。(mturk)
Apache: 构建模块时使用 apxs 提供的正确 ld 标志。防止 AIX 上 httpd 1.3 模块的一些崩溃。(rjung)
文档: 状态工作器中的 "val" 属性编号需要从 0 而不是 1 开始。(rjung)
文档: 从 workers common howto 中的示例配置中移除 JNI 参数。(rjung)
45026: 对于 Apache httpd 2.x,如果从后端收到空的原因短语,则添加 "Unknown Reason" 作为原因短语。否则 httpd 2.x 将返回状态 500。(rjung)
构建: 修复 Cygwin 构建。(rjung)
文档: 添加信息到文档中,通过 JkEnvVar 发送的变量不会在 request.getAttributeNames() 中列出。(rjung)
为 Apache 2.x 和 IIS 添加了看门狗后台线程,用于执行内部维护(空闲连接检查、后端探测)。参见 JkWatchdogInternal (Apache) 和 watchdog_interval (IIS)。(mturk)
将一些消息的日志级别从错误更改为信息。(mturk)
文档: 修复工作器属性 "secret" 的文档。(rjung)
通过额外的预处理器定义检测各种 Web 服务器的正确插件名称。(rjung)
LB: 如果存在已打开的通道,则不要将负载均衡器节点置于错误状态。这修复了当新连接因忙碌而失败时,导致已打开连接失去粘性的错误。这带回了每个节点的忙碌计数器和每个请求的私有状态数组。我们可以将状态标记为错误以使故障转移工作,同时如果存在已打开的工作连接,仍将节点操作和报告为正常。(mturk)
44738: 修复虚拟主机之间 JkOption ForwardURI* 的合并。补丁由 Toshihiro Sasajima 贡献。(rjung)
URI 映射: 向 URI 工作器映射添加扩展属性。允许使用 reply_timeout、active/disabled/stopped 和 fail_on_status。目前仅在 httpd 和 IIS 中实现了用法。(rjung+mturk)
URI 映射: 使动态重新加载原子化并释放不再需要的内存。(rjung)
配置: 当使用新的 --enable-api-compatibility 配置开关构建时,不要使用 httpd 2.2.0 后 API 函数。(rjung)
Apache: 如果虚拟主机中没有 JkMount,则 JkAutoAlias 无法与 JkMountCopy 结合使用。(rjung)
LB: 优化状态宏以提高性能。(rjung)
Apache: 允许使用环境变量 JK_REPLY_TIMEOUT 动态设置回复超时。(rjung)
状态: 添加了 AJP 工作器和 AJP LB 成员的 AJP 参数的可管理性。(rjung)
状态: 更改更新操作的参数名称,使其更容易与其他参数区分。(rjung)
状态: 为非 LB 成员的工作器也添加了 AJP 工作器统计信息。(rjung)
AJP: 重构工厂,将 ajp13/ajp14 公共部分移到 ajp_factory 中。(rjung)
状态: 仅同步已更改值的 SHM 工作器配置值。(rjung)
状态: 设置 lb_factor 而不是距离。(rjung)
状态: 次要布局更改,使用下拉菜单而不是多个文本链接。(rjung)
SHM: 在 LB 和状态工作器中使用 LB 子工作器只读属性的本地副本。(rjung)
状态: 添加 "dump" 操作以转储我们的初始配置。(rjung)
状态: 使用属性表决定哪个 cmd 操作使用哪个输出元素。(rjung)
通用: 将原始配置映射包含在 worker_env 中,使其可供工作器(例如状态工作器)使用。(rjung)
LB: 重构 httpd 备注的 "route" 返回。不使用 worker_record 的成员,因为那不是线程安全的。(rjung)
通用: 重构 "retries",从服务和 jk_worker 中移除,移到 ajp 工作器中。(rjung)
SHM: 为 SHM 中的 LB 和 ajp13 使用不同的结构。提高了类型安全性并节省了一些字节。(rjung)
SHM: 删除未使用的属性。(rjung)
SHM: 自动确定所有 Web 服务器的 SHM 大小。(rjung)
SHM: 使所有 Web 服务器的打开/附加日志记录保持一致。(rjung)
状态: 在输出中包含服务器本地时间。(rjung)
44116: 修复了多个 JSESSIONID cookie 的处理问题。(rjung)
37850: 在适当的地方使用线程安全的 localtime_r。(rjung)
在更多平台(尤其是 AIX)上使用线程安全的 strtok_r。(rjung)
状态: 改进了 XSS 强化。(rjung)
35303: 将服务成员使用默认值初始化从 Web 服务器特定代码移到我们的通用 jk_init_ws_service() 函数中。(rjung)
36385: 在使用预连接CPing但没有连接CPing的情况下,在连接后立即添加缺失的预连接/后连接CPing/CPong。(rjung)
37322: Apache: 增强 jk_error_exit() 中消息格式的健壮性。(rjung)
44147: 多个负载均衡器问题。(rjung)
1.2.25 到 1.2.26 之间的更改
原生
42003: 分配内存而不是使用堆栈上的固定大小。(mturk)
43229: 负载均衡器在回复超时后未进行故障转移。(rjung)
JKStatus: 修复详细的Apache httpd版本显示。这在httpd 2.2.4+版本中已损坏。(rjung)
LB/AJP: 重构 jk_connect.c, jk_ajp_common.c, jk_lb_worker.c。(rjung)
Configure: 修复损坏的apxs自动检测。(rjung)
Configure: 通过新的 --disable-trace 配置开关,从编译代码中删除跟踪日志。(rjung)
Common: 按照递减 (LRU) 槽顺序维护空闲连接。(rjung)
Apache: 即使未设置 JkRequestLogFormat,也为访问日志创建 JK_WORKER_ROUTE 和 JK_REQUEST_DURATION 备注。(rjung)
JKStatus: 增强 Apache httpd 的 URI 到 worker 映射列表。现在列出所有虚拟服务器的映射,而不仅仅是 JKStatus 自身被调用的那一个。(rjung)
JKStatus: 增强 URI 到 worker 映射列表。立即更新陈旧的 uriworkermap.properties。(rjung)
43873: 修复 httpd 重启期间发生的少量内存泄漏。(rjung)
Common: 在排除规则 (resp. JkUnMount) 中允许使用 '*' 作为 worker 名称,这将覆盖所有 workers。(rjung)
42038: 修正 IIS 的挂载和卸载的覆盖问题。(rjung)
43684: 在 uriworkermap.properties 文档中,将 JkMountFile 替换为 JkMountFileReload。(rjung)
Apache: 为 JkMountCopy 添加新值 "All"。(rjung)
43516: Apache httpd 模块在每次重启后,对于每个没有 JK 指令的虚拟主机,都会出现 8KB 的内存泄漏。(rjung)
Apache: 清理服务器配置的初始化和销毁。(rjung)
Apache: 从每个服务器配置中移除全局配置项。(rjung)
Apache: 移除未使用的 secret_key 和 automount/JkAutoMount 属性。(rjung)
清理 jk_uri_worker_map。(rjung)
Documentation: 对 JkShmFile 文档进行了少量补充。由 Gerhardus Geldenhuis 贡献。(rjung)
AJP13: 在收到响应头之前忽略刷新包。(rjung)
修复使用 worker 配置继承(属性“reference”)且日志级别为 debug 时,启动过程中发生的崩溃。(rjung)
AJP13: 将头名称与预定义常量精确匹配。避免与使用标准头名称作为前缀的自定义头名称可能造成的混淆。(rjung)
jkstatus: 修复 JkStatusUpdateTask 和 JkStatusUpdateLoadbalancerTask ant 任务中正确的参数验证。由 Christian Mittendorf 报告。(pero)
1.2.24 到 1.2.25 之间的更改
原生
IIS: 修复 shm 关机行为。(rjung)
General: 负载均衡器中使用的 fail_on_status 可以选择在不将失败的 worker 置于错误状态的情况下进行故障转移。(rjung)
NSAPI: 改进 Unix 的构建说明。(rjung)
NSAPI: 添加包含 JK 版本的初始化启动消息。(rjung)
General: 将静态函数声明为静态。(jim)
Documentation: 澄清 fail_on_status 行为。(rjung)
General: 在返回响应头之前执行 fail_on_status。(rjung)
NSAPI: 修复 shm 关机行为。(rjung)
NSAPI: 即使请求以错误结束,也设置返回状态。(rjung)
NSAPI: 允许在 WIN32 和 Netware 上不使用 shm_file。(rjung)
NSAPI: 修复 nsapi 在日志级别为 debug 且 unset refect_unsafe 时的崩溃。(rjung)
NSAPI: 改进 Solaris 和 Linux 的 nsapi 构建 Makefile。(rjung)
Build: 改进 Solaris 上配置时 pid_t 类型检测。(rjung)
Build: 对 WIN32 和 Netware 上的 gcc 提供实验性构建支持。(fuankg)
Build: Apache httpd 1.3/Netware 的 Makefile 优化。(fuankg)
General: 修复 1.2.24 中引入的缺失 flush bug。(rjung)
1.2.23 到 1.2.24 之间的更改
原生
Documentation: 改进了参考指南中 workers.properties 的描述。(rjung)
Documentation: 添加关于各种超时设置的 HowTo。(rjung)
Logging: 如果有 gettimeofday(),则向默认时间戳格式添加毫秒。(rjung)
Apache: 添加毫秒 (%Q) 和微秒 (%q) 作为可能的 JkLogStampFormat 转换说明符。这不使用 strftime(),但需要 gettimeofday()。(rjung)
IIS & Sun: 如果返回码为负数,也记录服务失败。(rjung)
42849: 如果 mod_jk 初始化失败,则中止 Apache httpd 1.3 的启动。Apache httpd 2.x 已执行此操作。(rjung)
42849: 如果初始化失败,则拒绝与 IIS 协作。在这种情况下,请求 isapi_redirect.dll 将向用户返回 500。这与 Apache Httpd 在致命初始化错误时拒绝启动服务器的情况最接近。(mturk)
Load Balancer: 修复 lb worker 中的死锁,该死锁在 Solaris 上针对线程化的 Apache MPMs 暴露。(rjung)
Logging: 将 LWP ID 作为 32 位无符号整数处理。尝试使其工作,尽管 pthread ID 是不透明的。(rjung)
JkStatus: 添加了 max_reply_timeouts 的操作。(rjung)
LB, Status: 添加特性 max_reply_timeouts,使 lb 能够容忍偶尔长时间运行的请求。(rjung)
JkStatus: 添加 OK/IDLE 作为 N/A 的继任者。(rjung)
Status worker: 重命名了运行时状态。所有状态都有一个主要状态 (OK 或 ERR) 和一个子状态。将名称 N/A 更改为 OK/IDLE。在参考指南的状态 worker 页面中添加了关于状态含义的文档。没有向代码中添加新状态。(rjung)
Common: 为恢复幂等 HTTP 方法 HEAD 和 GET 添加恢复选项。(rjung)
修正 worker 属性 retries 和 recovery_options 的文档。(rjung)
使日志行和行结束符的写入更具原子性。(rjung)
Common: 重构并统一了所有用例的 jk_map_read_prop* 和 jk_map_load_prop*。(rjung)
Common/Apache/IIS/Netscape: 添加一个选项来检查解码后的 URL 是否存在潜在恶意构造。(rjung)
IIS: 记录 auth_complete 和 uri_select。(rjung)
Apache/IIS/Netscape: 将默认转发编码更改为新的代理方法。(jfclere, rjung)
Common: 在转发到后端之前选择性地重新编码 URI。基于 httpd mod_proxy 完成的 URI 重新编码。(jfclere, rjung)
Common: 自动检测 pid_t 的正确打印格式。这至少修复了 Solaris 上的编译器警告。(rjung)
42608: 将 Content-length 处理为无符号 64 位,以允许巨大的上传和下载。(rjung)
Apache: 将转发 URI 添加到调试日志。(rjung)
Docs: 澄清 worker 名称和 jvmRoute 在负载均衡中的关系。(rjung)
对 jk_is_socket_connected 使用初始零超时。由此产生的检测效果相同,但显著提升了 mod_jk 的性能。在大多数情况下,操作系统不支持 1 微秒的超时,而是将其向上舍入到更高的值(例如,大多数系统默认的 100Hz 中断计时器频率)。补丁由 David McLaughlin 提供。(mturk)
NSAPI: 在启动期间检查正确的日志文件和共享内存文件配置。(rjung)
NSAPI: 添加对关于重试、刷新和连接持久性的通用选项的支持。(rjung)
NSAPI: 修复由于在 workers.properties 中使用 mount 属性导致的崩溃。更改了初始化顺序。(rjung)
改进了 libtool 的处理以及 CC 环境变量与 Apache 构建期间 configure 脚本使用的 CC 之间的差异。(rjung)
总是构建线程支持,除非在配置期间设置 --enable-prefork 标志。(rjung)
对于非 Windows 平台,如果不是为 Apache httpd 2.x/APR(例如 Sub Web Server)构建,或者不使用 configure,则使用来自 ap_snprintf.c 的 snprintf/vsnprintf,这些平台可能缺少 snprintf/vsnprintf 实现。(fuankg)
从 Apache 1.3 导入了 ap_snprintf()。(fuankg)
修复启动期间日志对象清理不正确,导致至少在 iSeries 上发生崩溃。(rjung)
添加 jk_stat() 和 jk_file_exists() 作为包装函数。i5/OS V5R4 要求 fopen 的文件名是 ASCII 格式,但 stat() 需要 EBCDIC 格式的文件名。(hgomez)
i5/OS (AS/400) V5R4 端口,其中 Apache 2.0 模块现在应使用 UTF8。(hgomez)
Docs: 添加关于 i5/OS V5R4 及更早版本构建的注释。(hgomez)
1.2.22 到 1.2.23 之间的更改
原生
[CVE-2007-0450] 和 [CVE-2007-1860]: 将 JkOptions 的默认值更改为 ForwardURICompatUnparsed。旧的默认值为 ForwardURICompat。这应该使 Apache httpd 和 Tomcat 之间的 URL 解释保持一致(防止双重解码问题)。(rjung)
1.2.21 到 1.2.22 之间的更改
原生
重构行结束符日志记录,使其在所有平台和 Web 服务器上都正确。(mturk)
添加了命令行 Windows make 文件。(mturk)
允许 fail_on_status 指令为多行。(mturk)
42076: 修复新选项名称,从 ForwardCertChain 更改为 ForwardSSLCertChain,与文档一致。(rjung)
Docs: 修正了一些拼写错误,更改了一些表的格式,修复了指向新闻页面的链接。(rjung)
修复新 IIS rewrite.properties 配置文件示例中 TC 6 示例的正确 URL。(rjung)
为多个文件添加 svn 属性。(rjung)
在配置示例的 uriworkermap.properties 中添加 TC 6 示例。(rjung)
允许 fail_on_status 指令的多个状态码。状态码可以通过空格或逗号分隔。(mturk)
IIS. 为 URL 重写规则添加了类似 pcre 的正则表达式。(mturk)
41922: Apache 1.3. 启用 JkEnvVar。(mturk)
Apache. 为支持 flock() 系统调用的操作系统添加 --enable-flock 配置参数,以便显式编译更快的 flock() 系统调用。默认情况下将使用 fcntl 系统调用进行锁定,它速度稍慢但也能在 NFS 挂载卷上工作。(mturk)
41562: 在 ISAPI Redirector 中为客户端读取添加调试日志。由 Tim Whittington 贡献。(mturk)
Apache. 添加 ForwardSSLCertChain JkOption。由 Patrik Schnellmann 贡献。(mturk)
IIS. 如果没有映射的 worker,则不允许访问 web-inf 或 meta-inf。这允许在映射上下文之外拥有这些名称的资源。(mturk)
Apache. 使用进程 ID 创建共享内存名称,并在退出时删除共享内存和共享内存锁定文件。(mturk)
IIS. 修复 1.2.21 中引入的 Keep-Alive 回归。(mturk)
删除启动时对空 init_map 的未使用检查。(rjung)
41770: 修复未配置 JkWorkersFile 时的启动错误。(rjung)
在 init_jk() 中使用 JK_TRUE/JK_FALSE 代替 OK/!OK 作为返回值。(rjung)
对 apache 启动日志消息进行微调(何时使用 STDERR,移除已弃用的 NOERRNO 标志,shm 警告和默认文件使用警告)。(rjung)
将 APR 预处理器指令替换为 httpd mpm_query 以检测 MPM 线程。添加关于自动检测到的池大小的调试日志消息。(rjung)
使 MMN 检查更容易理解和更精确(对于新的 ap_get_server_banner()/ap_get_server_description())。我们仅对 Apache httpd 2.3 使用新的 API。这样,我们的二进制文件就不会与次要 2.0 版本紧密耦合,而且无论如何我们也不使用 ap_get_server_banner()。(rjung)
使用完整的描述字符串 ap_get_server_description() 而不是来自 ap_get_server_banner() 的截断信息,因为此信息在内部使用(状态 worker 显示和 ajp14 后端通信),并且不会发送回普通用户。(rjung)
41757: 记录 configure 的 "--enable-prefork" 标志。(rjung)
增强解析属性映射失败时的日志消息。(rjung)
修复 worker 初始化期间日志消息不正确的问题,即远程主机无法解析时。我们记录了默认主机名“localhost”而不是配置的主机名。(rjung)
41770: 修复错误的第二部分:local_worker 和 local_worker_only 未出现在弃用属性列表中(也不支持),因此阻止了 Web 服务器启动。(rjung)
1.2.20 到 1.2.21 之间的更改
原生
[CVE-2007-0774]: 拒绝服务和关键远程代码执行漏洞。由于 map_uri_to_worker() 中 URL 长度超过 4095 字节时发生缓冲区溢出导致。由 ZDI (www.zerodayintiative.com) 报告。请注意,此问题仅影响 Apache Tomcat JK Web Server Connector 的 1.2.19 和 1.2.20 版本,不影响以前的版本。Tomcat 5.5.20 和 Tomcat 4.1.34 的源代码包中包含了易受攻击的版本。其他版本的 Tomcat 未受影响。
检查 worker. 参数,如果参数无效则不启动。(jfclere)
41439: 允许通过添加 JkStripSession 指令(每个虚拟主机可配置)从 Apache 静态内容的 URL 中剥离会话 ID。(mturk)
更改 JkEnvVar 变量空默认值的语义。直到 1.2.19:不允许。在 1.2.20:如果在配置中或运行时未设置为非空,则将变量作为空字符串发送。从 1.2.21 开始:如果配置没有第二个参数,则仅在运行时设置变量(即使设置为空字符串)时才发送变量。这允许与 tomcat 访问日志中的 condition 属性良好结合。(rjung)
41610: 修复对 Content-Length 头缺失的错误检测,导致重复的头。由 Boris Maras 贡献。(rjung)
更好地支持 SunONE (Netscape/iPlanet) Web 服务器的构建。(jim)
如果读取到重复的映射键且不允许(例如,解析 uriworkermap.properties 时),则添加警告。(rjung)
如果 uriworkermap.properties 有重复模式,则不要连接 worker 名称,而是覆盖 worker。(rjung)
即使在重复情况下也记录弃用消息。(rjung)
uriworkermap.properties: 修复重新加载 uriworkermap.properties 时删除 URL 映射的 off-by-one 问题。(rjung)
41439: 允许从 IIS 静态内容的 URL 中剥离会话 ID(可配置)。(rjung)
41333: 重构 isapi_plugin 配置读取。(rjung)
41332: 添加更多 errno 日志记录并统一格式。(rjung)
JkStatus: 通过向消息添加状态 worker 名称来改进日志记录。向 recover worker 操作添加了消息。(rjung)
JkStatus: 重构搜索 worker 和 sub worker。(rjung)
41318: 添加配置以使状态 worker 用户名检查不区分大小写。(rjung)
JkStatus: 将到下一次全局维护的估计时间添加到其他 MIME 类型,并采用 jkstatus ant 任务。(rjung)
JkStatus: 显示到下一次全局维护的估计时间。将显示到下一次恢复的时间更改为 min/max 对。(rjung)
JkStatus: 允许读/写状态 worker 的用户暂时将其切换到只读模式和从只读模式切换。(rjung)
JkStatus: 不要在只读状态 worker 中显示读/写命令。(rjung)
JkStatus: 允许处于错误状态的 lb 子 worker 通过状态 worker 进行管理性标记以进行恢复。(rjung)
Load Balancer: 不尝试并行恢复多次。使用额外的运行时状态“PROBE”和“FORCED”。(rjung)
JkStatus: 改进不同进程之间的数据同步。(rjung)
41381: 修复 feature fail_on_status 中的段错误(日志参数顺序错误)。补丁由 Juri Haberland 提供。(rjung)
在 WIN32 平台上的日志文件使用正确的 Windows 行结束符。(rjung)
1.2.19 到 1.2.20 之间的更改
原生
JkStatus Ant Task 文档页面。(pero/rjung)
JkStatus Ant Tasks: 添加新的更新和重置任务。(pero)
JkStatus Ant Tasks: 更新为新的 xml 状态格式。(pero)
允许通过状态 worker 更新操作设置枚举/布尔属性时使用整数和字符串值。(rjung)
Docs: 状态 worker 的新参考指南页面。(rjung)
Docs: 将 config 目录重命名为 reference,并在文档中使用标题 Reference Guide。(rjung)
为 workers 指令添加了 retry_on_status。(mturk)
Status Worker: 添加指令以使属性前缀和好/坏规则可配置。(rjung)
Status Worker: 如果 att=nosw,则省略 lb 成员。(rjung)
Status Worker: 新命令 cmd=version 用于输出简短版本。(rjung)
Status Worker: 新输出类型 mime=prop 生成属性列表。(rjung)
Apache: 修复多次设置 JkEnvVar 时对 JkEnvVar 的不正确处理。(rjung)
将 jvm_route 重命名为 route。弃用 jvm_route,但在解析 worker 配置时仍将其用作备用。(rjung)
IIS: 使 uriworkermap 文件重新加载检查间隔可配置。(mturk)
Apache: 使 uriworkermap 文件重新加载检查间隔可配置。(rjung)
Status Worker: 添加用于自定义 XML 输出的指令 (ns, xmlns, doctype)。(mturk)
Docs: 新页面,描述 uriworkermap。(rjung)
Docs: 为 worker 引用添加了 max_packet_size 的简短描述。(rjung)
Status Worker: 所有功能也可用于 xml 和 txt mime 类型 (list, show, update, reset)。(rjung)
Status Worker: 负载均衡器的新全局健康指标,命名为 bad (错误、恢复中或已停止)、degraded (忙碌或已禁用) 和 good (其余部分,活动且正常或不适用)。(rjung)
Status Worker: 新的编辑页面,用于更改负载均衡器所有成员的单个属性。(rjung)
Status Worker: 状态 worker 的标准日志记录。(rjung)
Status Worker: 代码重构。(rjung)
Status Worker: 新属性 user (list) 拒绝访问,如果请求用户(remote_user 的意义上)不在该列表中。空列表 = 不拒绝。(rjung)
Status Worker: 新属性 read_only 禁用状态 worker 中改变状态和配置的部分。(rjung)
36121: 当 mod_jk 服务于包含的 URI 时,不改变主 URI。(markt)
Apache VHosts: 合并 JkOptions +base - -base + +vhost - -vhost。(rjung)
Apache Docs: 向 Apache 配置文档添加了要求、上下文信息、默认值和继承规则。(rjung)
Status Worker: 向状态 worker 添加源类型,删除映射列表中多余的“context”列 (context=uri)。(rjung)
uriworkermap: 重新加载文件时,在读取新条目之前,会删除之前文件版本中的所有旧条目。(rjung)
在添加规则时,将普通映射和排除映射内部保持分离。不要将它们视为相同。(rjung)
Status Worker: 也为非 lb worker 和在全局视图中显示映射规则。(rjung)
Apache VHosts: 使用虚拟主机日志文件而不是主日志。(rjung)
Apache VHosts: 通过重构格式化方法,允许单独的时间戳格式。(rjung)
Apache VHosts: 将所有缺失的配置项添加到虚拟主机级别。不覆盖全局服务器的设置,而是在虚拟主机中未设置时继承它们。(rjung)
Apache: 从日志消息中删除不必要的功能名称。(rjung)
Apache: 添加默认日志文件位置和消息,如果使用了默认位置。(rjung)
Apache: 添加缺失的 JK_IS_DEBUG_LEVEL()。(rjung)
Apache VHosts: JkWorkersFile、JKWorkerProperty、JkShmFile 和 JkShmFileSize 仅允许在全局虚拟服务器中使用。(rjung)
添加更多 jk_close_socket(),并降低某些信息消息的日志级别。(rjung)
Load Balancer: 添加了 Sessions 策略。由 Takayuki Kaneko 贡献。(rjung)
Docs: 小幅增强并与最新版本同步。(rjung)
40997: 在 uriworkermap 重新加载时检查重复项时,将 URI 映射与其“!”对应物分开。(rjung)
40877: 确保共享内存对多个 Web 服务器子进程在附加时重置。(mturk)
IIS: 添加 shm_size 属性,以便能够处理超过 64 个 workers 的配置。(mturk)
IIS: 将默认线程计数增加到 250,使其与 Apache Httpd 的默认配置相同。(mturk)
40966: 修复 Windows 上的套接字描述符检查。(mturk)
40965: 初始化缺失的服务参数。(mturk)
40938: 修复重写映射的释放。感谢 Chris Adams 指出这一点。(mturk)
Apache: 添加了 +FlushHeader JkOptions。(mturk)
当 AJP 正文包大小为零时,添加显式刷新。(mturk)
40856: 修复 URL 映射中的大小写敏感性错误。(rjung)
40793: Documentation: Paul Charles Leddy 提供了 Apache HowTo 的改进。(markt)
40774: 修复错误的递归终止。此错误无意中将“reference”功能限制在 20 个 workers。(rjung)
40716: 为 IIS 和 Netscape 添加“reference”功能。(rjung)
Documentation: 修正 JK_WORKER_NAME 示例中的 SetEnvIf 语法。(rjung)
Documentation: 添加了 Apache 中负载均衡器日志记录的 STATE 和 ACTIVATION 备注的含义。(rjung)
Apache: 使用 instdso.sh 而不是 libtool:例如,libtool 在 HP-UX 上无法工作。(jfclere)
1.2.18 到 1.2.19 之间的更改
原生
Docs: 在 Apache 配置文档中添加 SetHandler 和新环境变量。(rjung)
Apache 1.3: 回溯“no-jk”功能。(rjung)
Apache: 添加一个环境变量,使 SetHandler "jakarta-servlet" 更有用。该变量是 JK_WORKER_NAME,但可以通过新指令 JkWorkerIndicator 更改。(rjung)
LB: 如果单个 worker 被禁用,则不使用单个 worker 快捷方式。(rjung)
Status worker: 在图例中添加激活和错误状态的简短解释。(rjung)
Docs: 添加 workers.properties 中各种超时设置的零超时值的含义。(rjung)
LB: 清理 Mladens 的强制恢复。(rjung)
LB: 如果使用 BUSYNESS 方法,不要将恢复中的 worker 的 lb_value 更改为 max。(rjung)
Apache: 自 1.2.14 以来,mod_jk 未能检测到客户端中止。(rjung)
Docs: 修正 JkEnvVar 的描述。(rjung)
Solaris: 在配置时检测 filio.h,以便在 solaris 上构建新的连接检测 (r432825)。(rjung)
添加功能以强制恢复负载均衡器成员中的 worker,如果所有成员都处于错误状态。这修复了由于 recovery_timeout 导致的返回 503 的时间间隔,尽管后端已准备好处理请求。(mturk)
Docs: 将弃用指令分开放在单独的表中。(rjung)
Docs: 允许 worker 名称中包含 "-" 和 "_"。(rjung)
允许使用属性“balance_workers”和“mount”的多行。(rjung)
使 jk_is_some_property 匹配更精确。(rjung)
JkStatus: 使刷新间隔可更改。(rjung)
JkStatus: 调整恢复时间相对于全局维护的显示。(rjung)
LB: 如果 worker 空闲时间过长,则将 worker 状态从 OK 重置为 NA。(rjung)
避免关于使用 lb_*_type 数组的编译器警告。改为使用函数。(rjung)
为 Apache 1 和 Apache 2 添加 %R JkRequestLogFormat 选项。(mturk)
允许从状态管理器更改 jvm Route。(mturk)
如果 Tomcat 在 post 请求中间失败,则不返回 400。而是返回 500。(mturk)
LB: 将 ok/error/recovering/busy 运行时状态合并为一个标量。(rjung)
LB: 将 active/disabled/stopped 配置状态合并为一个标量。(rjung)
LB: 添加几个 Apache 备注以启用负载均衡器结果的标准日志记录。(rjung)
LB: 主负载均衡器服务循环的重组。(rjung)
通过属性“reference”实现分层 worker 配置。(rjung)
记录已弃用的属性。(rjung)
IIS: 修复 simple_rewrite 在重写后的 URL 大于原始 URL 的情况。(mturk)
新增 JkOption "DisableReuse" 以禁用连接持久性。(jim)
LB: 将 sessionid 检索从 get_most_suitable_worker 移到 service。(rjung)
所有服务方法的代码清理(使用 TRACE, JK_LOG_NULL_PARAMS, 空指针检查)。(rjung)
JKSTATUS: 添加刷新链接。更新时不刷新。更新后重定向到列表视图。(rjung)
将新 hook add_log_items 添加到服务器中。(rjung)
APACHE httpd: 重命名 apache 日志记录备注。(rjung)
LB: 重命名锁和方法常量。添加默认值常量。(rjung)
默认日志级别应为 INFO 而非 DEBUG。所有服务器类型的默认日志级别应相同。(rjung)
将 rewrite_rule_map 和 log_level 作为 isapi_redirect 的非强制指令。(mturk)
40107: 重写 is_socket_connected 函数。不再使用非阻塞套接字。(mturk)
允许使用 VS2005 构建,同时避免过多警告。(mturk)
根据 MMN 决定使用哪个管道日志 API。mod_jk 1.2.18 导致 Apache 1.3 pre 1.3.28 编译失败。(rjung)
1.2.17 到 1.2.18 之间的更改
原生
在 getsockopt 中使用 socklen_t。同时引入 jk_sock_t。(mturk)
允许恢复等待时间低于 60 秒(新最小值为 1 秒)。(mturk)
1.2.16 到 JK 1.2.17 之间的更改
原生
修复了由于双重锁定导致某些属性更新时 jk status worker 挂起的问题。(rjung)
允许 JkMount 通过解析管道符号作为两个指令标记,使其行为类似于 uriworkermap.properties。(mturk)
1.2.15 到 JK 1.2.16 之间的更改
原生
为 IIS 添加了简单的重写功能。尽管简单,但它能满足大多数需求。(mturk)
添加了 RECOVER_ABORT_IF_CLIENTERROR 恢复选项,该选项在请求期间客户端连接中断时关闭连接。(mturk)
将 cache_timeout 指令重命名为 connection_pool_timeout。(mturk)
添加了 connection_pool_minsize 指令。(mturk)
弃用 recycle_timeout 指令。(mturk)
修正了状态 worker 输出中的一些 HTML 语法错误。(rjung)
为状态 worker 添加了 refresh=n 参数。它将每 n 秒更新显示。(rjung)
Balancer: 为均衡 workers 添加属性 distance,以表达 workers 之间的偏好。(rjung)
Balancer: 为均衡 workers 添加属性 jvm_route,以便在不同的均衡器中使用相同的目标。(rjung)
Status: 为状态添加 lb_mult。(rjung)
Balancer: 使不同的均衡策略以相似的方式工作(使用 lb_value,在全局维护期间使用衰减,对权重使用整数因子)。(rjung)
Balancer: 改进锁定。(rjung)
Balancer: Workers 在恢复后启动较慢。(rjung)
Balancer: 使不同的均衡策略以相似的方式工作(使用 lb_value,在全局维护期间使用衰减,对权重使用整数因子 lb_mult)。(rjung)
Balancer: 将恢复检查移至全局维护。(rjung)
Balancer: 添加全局维护方法,该方法仅在一个进程中调用。(rjung)
扩展我们对 autoconf 的使用,以找到 32 位和 64 位无符号类型及其 printf 格式。(rjung)
Logging: JkLogFile 和 Apache 1.3 的管道日志记录器。(rjung)
Logging: 除了 REQUEST 之外,为每个日志级别添加 PID 到日志行。(rjung)
Logging: 刷新缓冲日志以保持行顺序正确。与日志消息一起输出最终换行符。(rjung)
减小 shm 大小。(rjung)
仅在我们实际删除旧 worker 时才记录删除操作。(rjung)
37469: 修复分叉子进程的共享内存关闭问题。共享内存将由父进程关闭。(mturk)
37332: 修复 snprintf 函数可能误用缓冲区长度的问题。(mturk)
38859: [CVE-2006-7197] 保护 mod_jk 免受后端存在 bug 或恶意的 AJP 服务器的攻击。补丁由 Ruediger Pluem 提供。(mturk)
38889: 根据路径元素使用 worker 映射排序,以符合 Servlet 规范。补丁由 Steve Revilak 提供。(mturk)
36138: 添加了 Busyness lb 方法。补丁由 Chris Lamprecht 提供。(mturk)
修复悲观锁定模式。该补丁通过同步对共享内存数据的访问,正确处理了突发负载。(mturk)
38806: 即使 worker 被禁用也进行回收。这修复了处于错误状态的热备用 workers。(mturk)
37167: 允许使用类 BSD 的 make 进行构建。(mturk)
ISAPI 插件 (isapi_redirect.dll) 没有为 IIS 提供正确的请求数据以包含在 IIS 日志中。(markt)
1.2.14 到 1.2.15 之间的更改
原生
修复 AJP13 Cookie2 解析问题。Cookie2 总是作为 Cookie 发送。补丁由 Andre Gebers 提供。(mturk)
35862: NSAPI 插件尝试读取已释放的内存并尝试解引用空指针。补丁由 Brian Kavanagh 提供。(markt)
1.2.13 到 1.2.14 之间的更改
原生
修复 worker mpm 负载均衡器,其 cachesize 设置低于 ThreadsPerChild。如果 retries 设置为大于 3 的值,则每次尝试暂停 100 毫秒。这使得能够调整连接缓存,并在连接计数大于 cachesize 时序列化传入连接,而不是返回忙碌。 (mturk)
36525: Solaris 核心转储。(mturk)
36102: Worker 操作不持久化。(mturk)
35864: 状态 worker 不列出 workers。补丁由 Martin Goldhahn 提供。(mturk)
35809: JkMountCopy 不适用于 Apache 2.0。补丁由 Christophe Dubach 提供。(mturk)
35298: 单个 IIS 站点不支持多个 JK/ISAPI redirector。补丁由 Tim Whittington 提供。(mturk)
1.2.12 到 1.2.13 之间的更改
原生
34397: 紧急情况被处理为错误。(jfclere)
34474: Apache-1.3 未正确处理 URL 中的 //。(jfclere)
对传输/读取字节使用 64 位整数。
添加了 JkOptions +FlushPackets,用于在发送大量数据时优化内存使用。(mturk)
为负载均衡器添加了 lock 指令,允许在突发负载情况下更精确地负载均衡。(mturk)
添加了 worker.maintain 指令,允许自定义默认的 10 秒超时。在繁忙的服务器上,该值需要设置为更高的值。(mturk)
修复 NetWare 编译器处理 AP13 和 AP2 SDK 之间不同类型的问题。(fuankg)
为 WIN32 生成更易读的 user.dmp 崩溃分析输出。(wrowe)
34558: 修复第一次故障转移请求。(mturk)
1.2.11 到 1.2.12 之间的更改
原生
添加了 ForwardLocalAddress JkOptions 标志,用于传递本地而非远程地址。对远程地址阀门有用。(mturk)
修复当 stopped 标志设置为 true 时 worker 未被使用的问题。(pero)
添加负载均衡默认 worker secret 属性的文档。(pero)
1.2.10 到 1.2.11 之间的更改
原生
从 JK2 回溯 SC_M_JK_STORED,用于传递任意方法而不是使请求失败。(mturk)
添加了缺失的 SEARCH 和 ACL HTTP 方法。(mturk)
添加 worker secret 属性的文档。(pero)
为 worker 配置添加了 stopped 标志。将标志设置为 true 将停止流向该 worker 的所有流量。同时更新 Tomcat 5.5.10 版本中的 Ant JkStatusUpdateTask。仅在复制会话集群中有效。(pero)
添加了 worker 维护功能,将维护所有 worker 而不仅仅是当前 worker。这使得可以在所有 worker 上回收连接。(mturk)
回收连接时使用 shutdown 而不是硬断开套接字。(mturk)
添加唯一指令检查。现在,如果指令是唯一的,则会覆盖而不是连接。(mturk)
允许使用多个 worker.list 指令。(mturk)
34577: 对于 IIS,记录原始请求而不是记录 ISAPI 扩展的请求。(mturk)
34558: 确保 ajp 和 lb worker 返回的状态码相同。(mturk)
34423: 使用 APR_USE_FLOCK_SERIALIZE 在 FreeBSD 等平台上设置日志锁。补丁由 Allan Saddi 提供。(mturk)
33843: 修复获取用于构建 Apache HTTPD 的 LDFLAGS。补丁由 Beat Kneubuehl 提供。(mturk)
34358: 启用负载均衡器方法配置。(glenn)
34357: 在某些情况下,当使用 JkAutoAlias 指令时,Apache 2 mod_jk 可能会发生段错误。(glenn)
将 --enable-prefork 添加到文档中。(pero)
更新 tomcat_trend.pl 以适应新的错误日志字符串格式。(glenn)
1.2.8 到 1.2.10 之间的更改
原生
将默认共享内存设置为 64K 而不是 1M。(mturk)
如果 header 大于 AJP13 限制,则不将 worker 标记为错误状态。(mturk)
在 iSeries 上,您应使用 Apache 2.0 的最新 PTF(目前为 2.0.52)和至少包含 SI17402/SI17061 的累积更新。(hgomez)
将 xml 状态格式更改为 xml 属性语法。(pero)
33248: 修复 apxs 为 APR 包含定义多个目录的构建问题。(mturk)
32696: 当请求 WEB-INF 时返回 404 而不是 403,以符合 Servlet 规范。(mturk)
添加了用于管理 jkstatus 的 ANT 任务。(pero)
如果设置了 socket_timeout,则在向 Tomcat 发送任何请求之前检查 socket 是否存活。(mturk)
为 Apache Web 服务器添加了 JkMountFile。该文件可以包含 uri 映射(格式为 /url=worker),并每隔 60 秒检查更新。(mturk)
添加了状态 worker,用于通过网页管理 worker 运行时数据。(mturk)
添加了负载均衡器方法指令,用于设置均衡 workers 的算法。方法可以是 Request(默认)或 Traffic。(mturk)
添加了共享内存以允许动态配置。共享内存仅适用于 Unix 平台和具有多个子进程的 Web 服务器。对于 Apache Web 服务器,添加了两个新指令(JkShmFile 和 JkShmSize)。(mturk)
为状态 worker 添加了 textupdate 模式,用于处理来自 ant 任务的远程更新。(pero)
33562: 修复当 recovery_options 大于 1 时的 Reply_timeout 问题。补丁由 Takashi Satou 提供。(mturk)
33308: 修复在 Apache 1.3 中启用 ForwardDirectories 时出现的段错误。
1.2.7 到 1.2.8 之间的更改
原生
允许任何人使用 windbg 或任何其他调试工具调试和诊断堆栈转储,并(如果他们将 .pdb 文件添加到安装中)理解 dr watson 日志。补丁由 William A. Rowe (wrowe) 提供。
通过使用真实结构(忽略 typedef)来修复 in_addr_t 的用法。补丁由 William A. Rowe (wrowe) 提供。
修复 URL 重写,通过还原删除了 jsessionid 的原地 URI。(mturk)
通过引入互斥锁到负载均衡器 worker,使负载均衡器算法线程安全。(mturk)
修复 IIS 向客户端发送错误页面时,通过使用正确的 API 函数调用添加 Content-Type 头。(mturk)
32696: 防止在请求 web-inf URL 时 IIS 崩溃。(mturk)
对支持发现每个子进程线程数的服务器使用默认 cachesize。(mturk)。
修复 Apache content-length 头解析使用不区分大小写的比较。(billbarker)
修复使用不区分大小写的比较解析 AJP 头。(mturk)
如果 socket_timeout 设置为零或小于零,则使用无限套接字超时。(mturk)
将 balanced_workers 更改为 balance_workers,但保留旧指令以保持向后兼容性。(mturk)。
修复 cachesize 设置为零的 worker 的 ajp 初始化。(mturk)
32317: 使 mod_jk 具有复制感知能力(集群支持)。补丁由 Rainer Jung 提供。(mturk)。
31132: 如果 conf 中缺少 JkLogFile,则核心转储。(mturk)
1.2.6 到 1.2.7 之间的更改
原生
添加了名为 recover_time 的新属性,可用于更改默认的 60 秒恢复时间。(mturk)
为 worker 添加了自定义重试次数,这样我们就不依赖默认设置。如果设置为大于 3 的数字,它将在重试大于 3 时休眠 100 毫秒,然后再次尝试。(mturk)
添加了 JkWorkerProperty 指令,可以省略 workers.properties 文件。例如:JkWorkerProperty worker.ajp13a.port=8009。(mturk)
检查所有 JSESSIONID cookie 是否具有有效的 jvmRoute。如果您有多个 Tomcat 具有重叠域,则可能会有多个 cookie 且没有定义的顺序。只要不同域中没有共同的 Tomcat,这将正确路由。(billbarker)
添加了 JkUnMount 指令,用于负映射,其作用与 JkMount 指令相反。它用于阻止特定 URL 或内容类型。(mturk)
添加了通配符匹配 URI 映射。现在可以使用 JkMount 映射 /app/*/servlet/* 或 /app?/*/*.jsp。(mturk)
通过添加 Trace 选项重写日志记录。(mturk)
添加了 socket_timeout 属性,用于设置 socket 本身的超时时间。(mturk)
将 socket_timeout 属性更改为 recycle_timeout。这能更好地解释指令的实际作用。(mturk)
更改了负载均衡算法。新调度器的核心思想是:lbfactor 是我们“期望该 worker 工作多少”,或者“worker 的工作配额”。lbstatus 是“该 worker 需要工作以完成其工作配额的紧急程度”(最大的 lbstatus)。我们将每个 worker 的工作配额分配给 worker,然后查看其中哪个最紧急地需要工作(最大的 lbstatus)。然后选择该 worker 进行工作,并将其 lbstatus 减少我们分配给所有 worker 的总工作配额。因此,所有 lbstatus 的总和不会改变。(*) 如果某些 worker 被禁用,其他 worker 仍将正确调度。(mturk)
修复了 IIS redirector 在每个请求上都会查找 .properties 文件的问题。(mturk)
开始修复 64/32 位兼容性问题。(mturk)
1.2.5 到 1.2.6 之间的更改
原生
修复 LB 模式下的 POST 恢复问题。(hgomez)
添加 CPING/CPONG 支持,以避免 Tomcat 挂起的问题。(hgomez)
使 LB 中的 POST 恢复可配置。(hgomez)
更新到 Apache License 2.0。(hgomez)
对于 Apache 2.0,当 env var no-jk 存在时,mod_jk 不处理请求(已拒绝),因此即使 URL 匹配也不会将请求转发到 tomcats。例如,与 SetEnvIf 或 BrowserMatch 指令一起使用,以排除某些 URL/URI 或浏览器。(hgomez)。
为 iSeries (AS/400) 添加修复,它使用 XOPEN/Unix98 API,并且在调用 connect() 时需要设置 sa_len,这将解决 jk_connect 中的 EINVAL 错误。(hgomez)
1.2.4 到 1.2.5 之间的更改
原生
修复 URI 映射时的线程安全问题。(billbarker)
修复了在 Apache 2 和 worker MPM 下使用 mod_jk 解析 worker 主机名时的一个线程安全漏洞。(hgomez)
移除了当所有负载均衡 worker 的连接失败时出现的不必要的错误消息。(glenn)
当 mod_jk 无法连接到 worker 时,在错误消息中包含了 worker 的名称。这在您使用负载均衡 worker 时特别有用。(glenn)
修复了 Apache 2 中 mod_jk.log 文件被多次打开的问题。只能配置一个 mod_jk.log 文件。(glenn)
修复了 Apache 2 连接器,使得在配置了 JkOptions ForwardDirectories 的情况下,DirectoryIndex 对 index.jsp 页面生效。(hgomez)
修复了如果在 Apache 1.3 和 Apache 2.0 连接器中请求了 //path/to.jsp 形式的 URL,可能导致 JSP 源码泄露的问题。(billbarker)
1.2.3 到 1.2.4 之间的更改
原生
修复了在更新的 Apache 2 版本中构建 Apache mod_jk 时对 libtool 的使用。(jfclere)
对于使用线程的 Web 服务器,使用了 strtok() 的可重入版本。这修复了 Apache 2 和 worker MPM 下的一个线程安全漏洞。(glenn)
修复了 Apache 2 mod_jk 钩子优先级,使得 mod_jk 可以很好地与 mod_alias 和 mod_dir 协同工作。(glenn)
1.2.2 到 1.2.3 之间的更改
原生
新增了配置 JkLog 将其日志输出通过管道传输到可执行程序(例如 Apache rotatelogs 或 cronolog)的能力。仅限 Apache 2.0。(glenn)
为 Apache 2.0 新增了 JkAutoAlias。(glenn)
Apache 2/1.3:如果 Tomcat 返回错误但没有内容,则让 Apache 处理 Tomcat 返回的错误。(glenn)
新增了负载均衡器的 sticky_session 属性。如果设置为 0,带有 servlet SESSION ID 的请求可以路由到任何 Tomcat worker。默认值为 1,会话是粘性的。(glenn)
清理了对已中止客户端连接的检测和报告。此清理还确保如果远程客户端中止了连接,mod_jk 不会将任何请求传递给 Tomcat。(glenn)
修复了 Apache 2.0 中的一个错误,该错误导致如果转发到 Tomcat 的 POST 请求生成了经 mod_include 后处理的 SSI 指令,则该请求会失败。(glenn)
修复了 JkRequestLogFormat 在打印请求 URI 时的一个错误,该错误可能导致带有十六进制转义序列的 URI 格式不正确。(glenn)
1.2.1 到 1.2.2 之间的更改
原生
tomcat_trend.pl 脚本已更新,以支持已更改的已中止请求日志记录方式。(glenn)
jk 在 Apache 2.0 中正确设置了 content-type,使其能够与 mod_deflate 和 AddOutputFilterByType 协同工作。(hgomez)
jk 将检查 get_endpoint 的结果并处理失败情况。如果因为内存不足导致端点分配失败,从而在我们尝试访问端点时发生空指针解引用,则此调用可能会失败。(mmanders)
1.2.0 到 1.2.1 之间的更改
原生
14282:对于分块编码,不发送初始块。(costin)
新增了用于分析 mod_jk 日志并生成图表/报告的 Perl 脚本。(glenn)
使 JK 遵守 CanonicalHost 指令。(hgomez)
日志清理。(costin)
修复了 jk xdocs/docs 中的拼写错误。(hgomez)
为 Apache 2.0 新增了 JkRequestLogFormat。(hgomez)
最终补丁,使 JK 兼容 iSeries。(hgomez)
JK 2
JK2 已进入维护模式,不再进行进一步开发。停止 JK2 开发的原因是缺乏开发人员的兴趣。另一个原因是用户对采用 JK2 缺乏兴趣,这是由于与 JK 相比其配置复杂性所致。