2009-06-17 12 views
4

私はフロントエンドWebサーバーとしてNginxをポート80でリッスンしています。そして、特定の要求は、私が書いたmochiwebベースのWebサーバーにリバースプロキシとしてnginxを設定しましたこのため、ポート8000​​でリッスンマイnginxの構成は次のようになります。今NginxリバースプロキシからカスタムMochiwebアプリケーションへ

location /mymochiserver { 

      proxy_pass   http://127.0.0.1:8000; 
      proxy_redirect  off; 

      proxy_set_header Host    $host; 
      proxy_set_header X-Real-IP  $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

      client_max_body_size  10m; 
      client_body_buffer_size 128k; 

      proxy_connect_timeout  90; 
      proxy_send_timeout   90; 
      proxy_read_timeout   90; 

      proxy_buffer_size   4k; 
      proxy_buffers    4 32k; 
      proxy_busy_buffers_size 64k; 
      proxy_temp_file_write_size 64k; 
     } 

、私はURL http://localhost/mymochiserverにアクセスしたとき、私は、ブラウザ上の応答が表示されません。ブラウザは単に "localhostを待っている"と言います。 mymochiserverは、ユーザーが接続するたびに、実行されるターミナルウィンドウにトレースを出力します。そして、今、私はこのURLに接続するために開いた各ブラウザウィンドウのトレースを表示します。しかし、私はブラウザに書き込まれることを期待している出力が表示されません。しかし、私が直接URL http://127.0.0.1:8000/にアクセスすると、すべて正常に動作し、ブラウザのmymochiserverの出力が表示されます。したがって、直接呼び出されたときに機能します。しかし、nginxを使って逆プロキシすると、動作していないようです。どんなアイデアが間違っているのでしょうか?


更新:それは基本的にユーザーがmymochiserverに接続するCOMETアプリケーションであり、サーバーがすべてにデータを押し出す

Socket = Req:get(socket), 
inet:setopts(Socket, [{active, once}]), 
proc_lib:hibernate(?MODULE, feed, [Response, Userid, 1]); 

:私のMochiwebアプリケーションで 私はこれらのコード行を持っています接続されたクライアント。サーバーから送信されるデータがない場合、私はそのプロセスを休止します。そして起きたとき、私はフィード機能を呼び出してデータを送ります。そして、私がハイバネーションコードを削除すると、すべてうまく動作し、ブラウザに出力が表示されます。しかし、私が冬眠すると、うまく動作しません。どんなアイデアが間違っているのでしょうか?

答えて

4

固定!

参考:http://timanovsky.wordpress.com/2009/01/09/toward-a-million-user-long-poll-http-application-nginx-erlang-mochiweb/

私はプロキシのバッファリングをオフにして、それを動作させるためにnginxのでproxy_read_timeoutを増加しなければなりませんでした。だから私の設定ファイルは次のようになります:

location /mymochiapp { 
      proxy_pass   http://127.0.0.1:8000; 
      proxy_redirect  off; 

      proxy_set_header Host    $host; 
      proxy_set_header X-Real-IP  $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

      client_max_body_size  10m; 
      client_body_buffer_size 128k; 

      proxy_connect_timeout  90; 
      proxy_send_timeout   90; 
      proxy_read_timeout   3600; 

      proxy_buffering off; 
     } 

答えを指摘していただきありがとうございますthomas55!

関連する問題