2017-08-21 9 views
0

は、このことができます:NGLS over TLS経由でWebSocketを中継することは可能ですか?

  • ノードJSサーバ

  • JVMソケットサーバー

TLSを超える作業をWebSocketのトラフィックを処理するのnginxのWebSocketクライアントとして

  • を演技?

  • +0

    質問を正しく理解していることを確認するために、JVMサーバーはWebsocket接続を確立します。 –

    +0

    https://www.nginx.com/blog/websocket-nginx/ – tkausl

    答えて

    2

    私はこのセットアップには、2つの方法を想像することができ、確かに:

    1. nginxのにTLSを追加
    2. 起源用WebSocketサーバー(あなたのケースでJVM)

    に2つ目のTLSを追加しますアプローチは、NginxとWebsocketの間の接続を確保するので、より多くの利点があります(2つの異なるコンテナ/マシンでホストしたいと想像してください)

    Imag第二のアプローチのための

    Nodejs Socket Client <--Secure--> Nginx <--NOT Secure--> JVM 
    

    と、このような何か:最初のアプローチのために、このような図INE

    Nodejs Socket Client <--Secure--> Nginx <--Secure--> JVM 
    

    私はどのようにセットアップ最初のアプローチをすることができます示して、ここで公開リポジトリを作成しました:サーバー側でhttps://github.com/afshinm/websocket_tls_docker

    セットアップTLS

    2番目のアプローチを採用したい場合は、フレームワークによって異なります。あなたは文書を読む必要があります。しかし、Nginxはトラフィックを復号化して暗号化できるので、この場合にはproxy_passの値をhttps://...のプレフィックスに変更するだけで、Nginxは最初にトラフィックを復号化することがわかります。

    しかし、最初のアプローチのために、ちょうどTLS有効にするために、あなたの server設定に以下の設定を追加します。

    ssl on; 
    ssl_certificate /path/ssl-bundle.crt; 
    ssl_certificate_key /path/myserver.key; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    

    をAND(あなたの設定に応じて)あなたのserverlocationブロックにこれらを追加することを忘れないでください:今

    proxy_pass ​http://your_jvm_backend_host; 
    proxy_http_version 1.1; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_read_timeout 86400; 
    

    、あなたの顧客へのnginxのからあなたの接続は、(wss://...)安全です。

    セットアップクライアント

    あなたがwsパッケージを使用している、あなたはこのような安全なのWebSocketコネクションに接続できると仮定すると:それだ

    const WebSocket = require('ws'); 
    
    const ws = new WebSocket('wss://your_backend'); 
    
    ws.on('open', function open() { 
        ws.send('Hola!'); 
    }); 
    

    +0

    スーパー、thanks @ afshin-mehrabani!これを試しましたか? – Bod

    +0

    @Bodはい、私はここに公的なレポを作成しました:https://github.com/afshinm/websocket_tls_docker –

    +0

    甘い、ありがとう! – Bod

    関連する問題