在Apache中终止HTTP(S)连接

在Apache中终止HTTP(S)连接,apache,apache2,Apache,Apache2,比方说,Apache被配置为允许长期存在的连接(KeepAlive)。而且它配置了相当高的超时时间 我们有一些特殊情况,我们应该强制关闭/杀死这些长期存在的连接(我们不能等到它超时) 你能给我一些指示,怎么做 如果这些信息对您有用,我将不胜感激 a) SSL b) 反向SSL代理 通常,最终的解决方案将是一个带有SSL和客户端证书身份验证的Apache。Apache将充当反向代理。我还需要终止一些基于客户端证书主题的连接。保持两个单独的Apache实例运行,1个用于SSL,1个不用于SSL。如果

比方说,Apache被配置为允许长期存在的连接(KeepAlive)。而且它配置了相当高的超时时间

我们有一些特殊情况,我们应该强制关闭/杀死这些长期存在的连接(我们不能等到它超时)

你能给我一些指示,怎么做

如果这些信息对您有用,我将不胜感激 a) SSL b) 反向SSL代理


通常,最终的解决方案将是一个带有SSL和客户端证书身份验证的Apache。Apache将充当反向代理。我还需要终止一些基于客户端证书主题的连接。

保持两个单独的Apache实例运行,1个用于SSL,1个不用于SSL。如果使用prefork模型,则可以根据进程生命周期,迭代地
杀死
具有正确实例父路径的旧PID


不确定您是否可以内省或获得每个主题的httpd进程的PID…

我不确定长保留设置是否真的能帮助您优化SSL会话。SSL会话协商发生在第一次连接时,我们可以假设它使第一个请求延长了20%。但是,然后在服务器端激活SSL缓存,来自同一浏览器的进一步SSL请求将不会受到SSL协商的影响

我建议使用5s的Keepalive超时,这通常足以处理页面加载和该页面上附加的css/js/图像。也许你也可以试试15秒。但任何更大的东西对我来说都没有意义,除非你用彗星的持久连接来处理。我可能错了。做一些测试


请注意,如果您在apache后面执行一些负载平衡器操作,并且不同的apache服务器不共享SSL会话缓存,则可能会再次出现SSL协商问题。这就是为什么负载平衡器有时会尝试将链接保持在SSL模式下(始终将此对象指向该服务器)的原因。但是我从来没有读过HTTP Keepalive应该用于SSL优化。

当我研究这个问题时,我没有找到解决这个问题的现有解决方案。然而,我能够原型化Apache模块,它完全按照所描述的那样(杀死一个长寿命的连接)。

这个问题属于serverfault.com,因为它是特定于系统管理员的,不涉及编程。你能找到有用的东西吗?@user1777914 Whoaa。。。仅仅7年过去了。请检查我下面的答案(追溯到5年前):)谢谢。好主意。然而,我在寻找更微妙的东西(关闭模块代码中的连接,而不是终止服务于某个客户机的整个流程)。这并不完全是出于优化的原因。通常,在这种情况下,SSL用于身份验证/授权,它作为隧道工作,允许客户端应用程序与服务器端应用程序对话。一些第三方应用程序可能是客户端应用程序和服务器应用程序,而我的Apache只是坐在中间负责认证和授权。第三方客户端和服务器端应用程序可能出于自身原因使用keepalive。如果客户端不再被授权,我需要终止连接。所以你想使SSL会话无效。您可以使用client->apache连接保持短时间的保持活动请求。SSL会话将在收到新请求时保持有效(每5秒或15秒一次)。当授权必须失效时,您需要做两件事:删除ssl会话(它在一个文件中),同时防止新的身份验证和ssl协商成功(但如果是数据库或基于ldap的连接,并且您刚刚使该帐户无效,因此希望中断现有会话,则第二个可能已经完成)。