2012-04-26 13 views
25

私はnode-http-proxyモジュールをnginx proxy_passモジュールに置き換えたいと思います。それは新しいリリースのnginxバージョンで可能ですか、私はそれがHTTP/1.1をサポートしています。私はその問題で苦労しているいくつかのスレッドを見ました。ウェブソケットはnginxによってサポートされていません。nginx 1.2.0 - socket.io - HTTP/1.1 - プロキシwebsocket接続

私の場合、いくつかのノードプロジェクトをバックグラウンドで実行していて、ドメインに応じてWebSocket接続をポート80から8000-8100にルーティングしたいとします。 tcp_moduleアドオンを使用せずにwebsocketプロキシ/リバースプロキシを行うネイティブな方法はありますか?

proxy_passingを使用してnginx.confにアップストリームをセットアップしようとしましたが、websocket経由でポート80に接続しようとすると、502ゲートウェイエラーが発生します。

誰もが同じ問題に直面していますか? 誰かがnginx + spcket.ioの動作例を持っていますか?ポート80でプロキシされていますか?

+0

を説明しました。 – Dayo

+0

はい、可能です。トラブルシューティングを行うには、nginx.confをインクルードしておけば役に立ちます。 – nil

答えて

34

いいえ、これはまだできません。 nginx 1.2には、実際にHTTP/1.1リバースプロキシを含む1.1.x開発ブランチからのものが組み込まれています。 Websocket接続はHTTP/1.1の "Upgrade"ヘッダーを使用して確立されますが、nginxがこの種のヘッダーをサポートしているということは、WebSocketをサポートしているわけではありません(WebソケットはHTTPではなく別のプロトコルです)。 は(私は私が私の目的のために十分に安定であることが判明1.1.xのブランチを()を使用して、これを自分自身を試してみましたが、それがtcp_moduleせずに動作しません)、おそらくの1.3.xでサポートされます

WebSocketを

http://trac.nginx.org/nginx/roadmap) 。

あなたの選択肢は以下のとおりです。TCPモジュールなし

  • ノード-HTTPプロキシ使用のnginxのを使用して

    • キープ。 socket.ioはwebsocketを使用しませんが、何か他のもの(例えばロングポーリング)
    • nginxとtcpモジュール:この場合、私はあなたがこのモジュールのために追加のポートを必要としていると思います。フロントをリバースプロキシとして使用する:nginxとノードの前でHAProxy(ウェブ​​ソケットをサポートする)を使用する。 Nginxは単にプロキシではなく静的ファイルサーバーとして機能します。追加のキャッシングが必要な場合、ワニスは別のオプションです。
    +0

    浄化のためのThxマティアス。私にとっては、nginxがHTTP1/1を搭載していれば、websocketプロキシをサポートするのは当然です。私はそのHTTPプロトコルではないが、まだいくつかの宿題をする必要がある継ぎ目を知っている:) – ayk

    +0

    この執筆時点では、Nginx 1.3がリリースされ、Webソケットをサポートしています。それは私が[ブログ](http://metacogni.tv/blog/2013/02/19/websockets-with-nginx-plus-ssl-also/)のかなりシンプルな設定です 希望に役立ちます。 – Octaflop

    0

    TCPモジュールを使用したNginXに関しては、私が遭遇した問題はほとんどありません。 しかし、最も難しいのは、EC2インスタンスのポート80でnginxを使ってWebソケットを実行しようとしています。

    私はアドオンがネイティブな方法であることを利用し、全体の構成にhere

    関連する問題