apache代理到tomcat保持活力混乱

Posted

技术标签:

【中文标题】apache代理到tomcat保持活力混乱【英文标题】:apache proxy to tomcat keep alive confusion 【发布时间】:2010-12-19 17:49:09 【问题描述】:

我在 tomcat 6 服务器前面有一个 apache 2.2 服务器。在 apache 上使用 mod_proxy_ajp 代理对 tomcat 的请求。非常标准的设置。

如果我需要禁用浏览器的保持连接,我该怎么做?

我需要禁用 keep-alive http 请求,因为我怀疑我的一些用户的防火墙可能会丢弃非活动的 keep-alive 连接,这会随机导致问题。

在 apache 和 tomcat 上都有各种“保持活动”的配置。

httpd.conf 有“KeepAlive Off”(在我的情况下似乎没有什么不同)

同样在设置 ProxyPass 的 httpd.conf 中,您可以有一个参数“keepalive”,但这仅在我的 apache 和 tomcat 之间存在代理/防火墙时才有用,在我的情况下没有代理/防火墙,并且是不是问题。

Tomcat 本身,http 连接器有“keepAliveTimeout”和“maxKeepAliveRequests”,但这仅适用于 http 连接器。

tomcat ajp 连接器也有一个“keepAliveTimeout”,但这是针对来自 apache 的 ajp 请求,不确定这是否应该/流向从浏览器到 apache 的真实 HTTP 请求。

最重要的是,还有 HTTP1.0 与 HTTP1.1 的区别。

所以它变得令人困惑......有人可以解释一下吗?

【问题讨论】:

我想知道你为什么要禁用保活功能。 【参考方案1】:

有(至少)四个“保活”。

    客户端浏览器和 Apache 之间的 HTTP 层保持活动。 (在 HTTP/TCP 连接中启用多个客户端请求。要配置“KeepAlive”指令。)

    客户端浏览器和 Apache 之间的 TCP 层保持活动。 (为了避免连接被防火墙关闭,请定期发送空包(Linux默认2小时左右)。我不知道如何在Apache中配置。)

    Apache 和 Tomcat 之间的 AJP 层保持活动。 (在 AJP/TCP 连接中启用多个 Apache 请求。要配置“ProxyPass”的“max”和“smax”选项。)

    Apache 和 Tomcat 之间的 TCP 层保持活动。 (与 2 相同,但用于 Apache 和 Tomcat 之间的防火墙。要配置“ProxyPass”指令的“keepalive”选项。)

因此,您的配置(“KeepAlive off”)可能适用于客户端和 Apache 中的防火墙。对“LogFormat”指令使用“%X”来检查是否禁用了keep-alive(上述类型1)。

顺便说一句,我认为当“KeepAliveTimeout”不是那么大时,防火墙关闭连接不会造成严重问题。 如果您没有问题(除了警告消息),我认为您可以原样离开。

【讨论】:

以上是关于apache代理到tomcat保持活力混乱的主要内容,如果未能解决你的问题,请参考以下文章

apache反向代理tomcat的两个代理模式及相关的会话保持配置示例

Apache下的子域代理到Tomcat

Apache 到 tomcat 代理不起作用

C# modbus 一次性读取多个寄存器数据 数据会混乱

质量小议18 -- 熵

43 多个相同限定名类型同时存在导致的继承结构混乱的情况