-1

ejabberdでemit(xmppクライアントのgwt実装)を実行しようとしましたが、正常に動作します。私は、emitの開発者がJavaサーブレットを使用してリクエストを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

(servlentプロキシを使用した同じクライアントコード(gwtから準拠したjsコード)は正常に機能するため、nginx構成の問題である可能性があります)

4

1 に答える 1

1

最後に、私は問題を発見しました:このような私のプロキシ構成:

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

したがって、nginxはすべてのリクエストを127.0.0.1:80からlocalhost:5280にリダイレクトします

これは、インターネットから切断した場合は正常に機能しますが、インターネットに接続した場合、hostsファイルは次のようになります。

127.0.0.1       luya    localhost.localdomain   localhost
111.186.4.11    luya    localhost.localdomain   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 に答える