【发布时间】:2016-01-12 08:16:43
【问题描述】:
当我使用 Apache mod_proxy 将我的 go-requests 转发到我的 golang-webserver 时,我的 go-server 在客户端断开连接时无法识别。我正在使用关闭通知器:
notify := rw.(http.CloseNotifier).CloseNotify()
go func() {
<-notify
brk.closingClients <- cl.session.Value
}
当我使用防火墙站点路径生根时,它也不起作用。 但是当我使用我自己的 golang 反向代理时,它运行得非常好,没有任何问题。 使用我的 apache mod_proxy,客户端在将更多真实数据发送到 go webserver 后收到通知。
也许有人知道如何解决我的问题,当客户端直接断开连接时我会识别出来,因此不会收到更多数据。
这是我的 mod_proxy 配置
SSLProxyEngine On
ProxyRequests On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
ProxyPass /event https://xxx.xxx.xxx.xxx:8888/event flushpackets=on keepalive=on
【问题讨论】:
-
只是一个快速的想法,但 不关闭连接 不正是您的代理配置中的
keepalive=on标志应该做什么? -
该标志可防止防火墙在连接处于非活动状态时断开连接。所以我尝试了你的想法并删除了标志,但我遇到了同样的问题。
-
也许 apache 使用了一个连接到你的 go 服务器的池?
-
我怎么知道 apache 是否使用池?
-
@user2715821,错误日志级别“调试”将这些血淋淋的细节(例如初始化工作人员、选择工作人员等)转储到与您的虚拟主机/其他相关的日志接收器中。
标签: apache go proxy reverse-proxy mod-proxy