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保持活力混乱的主要内容,如果未能解决你的问题,请参考以下文章