我正在使用Apache + mod_proxy提供与Ejabberd聊天应用程序。 它使用了Bosh(HTTP上的XMPP)。
问题是,当用户closures浏览器时,Apache保持与后端服务器连接一段时间(大约1分钟)。
这使我很烦恼,因为Ejabberd可以意识到用户只有在套接字closures时才会消失,所以用户的对话者不知道在这段时间+ Ejabberd自己的超时时间里发生了什么。 我可以改变Ejabberd的超时时间,但是我不知道如何减lessApache端的closures时间。
浏览器closures之前,请参阅netstat的输出:
浏览器 – > Apache mod_proxy
tcp 0 0 127.0.1.1:80 127.0.0.1:52361 TIME_WAIT tcp 0 0 127.0.1.1:80 127.0.0.1:52380 ESTABLISHED tcp 0 0 127.0.0.1:52380 127.0.1.1:80 ESTABLISHED
Apache mod_proxy – > Ejabberd
tcp 0 0 0.0.0.0:5280 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:5280 127.0.0.1:40972 ESTABLISHED tcp 0 0 127.0.0.1:40953 127.0.0.1:5280 TIME_WAIT tcp 0 0 127.0.0.1:40972 127.0.0.1:5280 ESTABLISHED
而浏览器closures后 ,在几十秒到约1分钟…
浏览器 – > Apache mod_proxy
tcp 0 0 127.0.1.1:80 127.0.0.1:52361 TIME_WAIT tcp 1 0 127.0.1.1:80 127.0.0.1:52380 CLOSE_WAIT tcp 0 0 127.0.0.1:52380 127.0.1.1:80 FIN_WAIT2
Apache mod_proxy – > Ejabberd
tcp 0 0 0.0.0.0:5280 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:5280 127.0.0.1:40972 ESTABLISHED tcp 0 0 127.0.0.1:40953 127.0.0.1:5280 TIME_WAIT tcp 0 0 127.0.0.1:40972 127.0.0.1:5280 ESTABLISHED
我的Apacheconfiguration:
<VirtualHost *:80> ProxyRequests On ProxyPass /http-bind/ http://localhost:5280/http-bind/ ServerName desktop <Proxy *> Order deny,allow Allow from all </Proxy> RewriteEngine Off [...] </VirtualHost>