Apache 戈朗没有';无法识别关闭通知程序

Apache 戈朗没有';无法识别关闭通知程序,apache,go,proxy,reverse-proxy,mod-proxy,Apache,Go,Proxy,Reverse Proxy,Mod Proxy,当我使用Apache mod_proxy将go请求转发到golang Web服务器时,我的go服务器无法识别客户端何时断开连接。我正在使用关闭通知程序: notify := rw.(http.CloseNotifier).CloseNotify() go func() { <-notify brk.closingClients <- cl.session.Value } 当客户端断开连接时,Apache服务器不会关闭连接。尽可能长时间地重复使用连接对

当我使用Apache mod_proxy将go请求转发到golang Web服务器时,我的go服务器无法识别客户端何时断开连接。我正在使用关闭通知程序:

notify := rw.(http.CloseNotifier).CloseNotify()
go func() {
        <-notify
        brk.closingClients <- cl.session.Value
}

当客户端断开连接时,Apache服务器不会关闭连接。尽可能长时间地重复使用连接对It来说效率更高

如果您确实希望每次重新连接反向代理(请注意,您可能会遇到性能或端口分配问题),您可以强制
mod_proxy
使用HTTP/1.0,或每次使用以下任一方法显式关闭连接:

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

当客户端断开连接时,Apache服务器不会关闭连接。尽可能长时间地重复使用连接对It来说效率更高

如果您确实希望每次重新连接反向代理(请注意,您可能会遇到性能或端口分配问题),您可以强制
mod_proxy
使用HTTP/1.0,或每次使用以下任一方法显式关闭连接:

SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

只是一个简单的想法,但关闭连接不正是代理配置中的
keepalive=on
标志应该做的吗?该标志防止防火墙在连接处于非活动状态时删除连接。因此,我尝试了您的想法并删除了该标志,但我也遇到了同样的问题。也许apache使用了到您的go服务器的连接池?我如何知道apache是否使用了连接池?@user2715821,错误日志级别的“debug”会转储这些血淋淋的详细信息(例如初始化工作线程、选择工作线程等)进入与您的虚拟主机相关联的日志接收器中/随便什么。只是想一想,但关闭连接不正是代理配置中的
keepalive=on
标志应该做的吗?该标志防止防火墙在连接处于非活动状态时断开连接。因此,我尝试了您的想法并删除了该标志,但我也遇到了同样的问题。也许apache使用了到您的go服务器的连接池?我如何知道,如果apache使用了连接池?@user2715821,错误日志级别的“debug”将这些血淋淋的详细信息(例如初始化工作线程、选择工作线程等)转储到与您的虚拟主机相关联的日志接收器中。