-1

我尝试使用 ejabberd 运行 emit(xmpp 客户端的 gwt 实现),它工作正常。我注意到 emit 的开发人员使用 java servlet 代理对 ejabberd 的请求:

https://github.com/EmiteGWT/hablar/blob/master/src/main/java/de/spieleck/servlets/ProxyServlet.java),

我想绕过这个代理,所以我关注这个帖子:

http://anders.conbere.org/blog/2011/05/03/get_xmpp_-_bosh_working_with_ejabberd_firefox_and_strophe/

但是javascript客户端(由emit编译)连接ejabbered需要很长时间,然后快速断开连接,nginx错误日志如下:

2012/10/06 17:04:33 [error] 5920#0: *52 upstream timed out (110: Connection timed out) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "POST /http-bind HTTP/1.1", 
upstream: "http://111.186.4.11:5280/http-bind", host: "127.0.0.1", referrer: "http://127.0.0.1/hablartest/HablarTest1.html"

谁能告诉我我做错了什么?

我的配置:firefox-13 ejabberd-2.1.11 nginx-1.0.5 ubuntu-11.10

(由于相同的客户端代码(从gwt编译的js代码)与servlent代理工作正常,所以我认为这可能是一个nginx配置问题)

4

1 回答 1

1

最后,我发现了问题:我的代理配置是这样的:

 location ~ ^/http-bind {       
         proxy_pass http://localhost:5280;
 }

所以 nginx 会将所有请求从 127.0.0.1:80 重定向到 localhost:5280

如果我断开与 Internet 的连接,这将正常工作,但如果我连接到 Internet,我的 hosts 文件将变为:

127.0.0.1       luya    localhost.localdomain   localhost
111.186.4.11    luya    localhost.localdomain   localhost

据我了解,localhost 将被随机“取”为 127.0.0.1 或 111.186.4.11,所以这是这个令人困惑的问题。解决方案很简单,更改代理配置

proxy_pass http://localhost:5280;

 proxy_pass http://127.0.0.1:5280;
于 2012-10-12T14:07:33.843 回答