2016-07-27 16 views
2

Nginxがノードの前でリバースプロキシとして使用されているため、ノードが動的な処理を行うことを可能にしながら静的なコンテンツを提供するように設定されたサーバー全体を読み上げています。私の質問は、誰かがなぜWebSocketにプロキシをリバースするためにnginxのフロントを使用したいのですか? nginxが静的コンテンツ(HTML、CSS、JS、メディアなど)を提供する場合、サービスされているJSファイルは、websocketがnodejsでリッスンしているIPアドレスとポートを使用して直接サーバーに接続することはできませんサーバ?なぜサーバ上のWebSocketに接続するためにnginxを経由するのですか?あるいは、この状況をはっきりと理解していないのですか?ありがとうございました!WebSocketプロキシとしてnginxを使用する理由

+0

あなたはnginxのセキュリティモデルを取得します。メインサイトに設定したIPアドレス/リファラーの制限(例えば)もwebsocketに適用されます。 –

+0

これを読む必要があります... http://stackoverflow.com/questions/224664/difference-between-proxy-server-and-reverse-proxy-server – JClarke

+0

@Jclarke "proxy"という用語を使用して申し訳ありません。私の質問を編集しました。 「リバースプロキシ」という用語を使用します。しかし、私の質問はまだ立っている.. – TheMAAAN

答えて

0

WebSocketアプリケーションは、クライアントとサーバー間で長時間実行される接続を維持し、リアルタイムアプリケーションの開発を容易にします。 HTTPからWebSocketへの接続をアップグレードするために使用されるHTTPアップグレードメカニズムは、アップグレードおよび接続ヘッダーを使用します。リバースプロキシサーバーがWebSocketをサポートする際に直面する課題がいくつかあります。 1つは、WebSocketがホップバイホッププロトコルなので、プロキシサーバーがクライアントからのアップグレード要求を傍受するときに、適切なヘッダーを含む独自のアップグレード要求をバックエンドサーバーに送信する必要があります。また、HTTPによって使用される典型的な短命接続とは対照的に、WebSocket接続は長期間使用されるため、リバースプロキシは、これらの接続がアイドル状態にあると思われるので閉じずに開いたままにする必要があります。

NGINXは、クライアントとバックエンドサーバーの間でトンネルを設定できるようにすることでWebSocketをサポートします。 nginxのは、クライアントからバックエンドサーバーへのアップグレードのリクエストを送信するには、アップグレードおよびConnectionヘッダがこの例のように、明示的に設定する必要があります。

location /wsapp/ { 
    proxy_pass http://wsbackend; 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
} 

これが完了すると、nginxのは、WebSocketの接続としてこれを扱います。ご覧ください詳細について

: - これは役立つだろうhttps://www.nginx.com/blog/websocket-nginx/ https://blog.martinfjordvald.com/2013/02/websockets-in-nginx/

願っています!

+1

「方法」について説明しましたが、「理由」を知りたいと思います。 Nginxを経由せずにnodejsサーバのIPアドレスとポートを直接参照することができるときに、なぜNginxをリバースプロキシとして使用したいのですか?したがって、静的コンテンツ(例:jsファイル)がノードと通信する必要がある場合は、単にNetscapeの接続を直接設定するだけで、Nginx btuを使用してすべての静的コンテンツを提供します。私のポイントを理解していますか? – TheMAAAN

+0

OK nginxを使用する理由の1つはプロキシパスです。これを使用してAPIを保護することができます。公開するか、フロントエンドに別のAPIを表示できます。proxypassでは、指定した実際のAPI名を別のAPIにリダイレクトできますあなたのコードを保護します。第二に、簡単にgginの圧縮とminficationを有効にすることができますnginxを使用して1つのステップとあなたのサイトのランクが高いです。あなたの画像とnginxを使用してファイルをインデックスすることもできます。 nginxをストリーミングサーバとして使用することもできます。 –

+0

あなたが直接接続していた場合は、これらの機能を得ることはできません(自分でプログラムしていない限り)。 Nginxがnodejsプロセスと同じマシンにある場合はどうなりますか?リストされている機能を引き続き利用できますか? – TheMAAAN

関連する問題