代码之家  ›  专栏  ›  技术社区  ›  Patrick

Tomcat的Apache代理保持活跃混乱

  •  7
  • Patrick  · 技术社区  · 15 年前

    我在Tomcat6服务器前面有一个Apache2.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连接器。

    TomcatAJP连接器也有一个“keepaliveTimeout”,但这是针对来自Apache的AJP请求的,不确定是否应该/流到浏览器到Apache的实际HTTP请求。

    最重要的是,HTTP1.0与HTTP1.1之间也存在差异。

    所以这会让人困惑……有人能解释一下吗?

    1 回复  |  直到 15 年前
        1
  •  12
  •   habe    15 年前

    至少有四个__保持活力__s。

    1. HTTP层在客户端浏览器和Apache之间保持活动状态。 (在HTTP/TCP连接中启用多个客户端请求。_156;keepalive_157;要配置的指令。)

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

    3. AJP层在Apache和Tomcat之间保持活跃。 (在AJP/TCP连接中启用多个Apache请求。_156;max_157;和_156;smax_157;要配置的__proxypass_157;选项。)

    4. TCP层在Apache和Tomcat之间保持活动状态。 (与2相同,但用于Apache和Tomcat之间的防火墙。_156;keepalive_157;__proxypass_157;要配置的指令的选项。)

    因此,对于客户机和Apache中的防火墙,您的配置(保留挂起)可能会正常工作。对于__logformat_157;指令,使用_%x_157;检查是否禁用了保持活动(上述类型1)。

    顺便说一句,我认为当keepaliveTimeout_157;不太大时,防火墙关闭连接不会造成严重问题。 如果你没有问题(除了警告信息),在我看来,你可能会原封不动地离开。

    推荐文章