2017-07-28 13 views
0

私は次のセットアップがありますnginxの(WS - > WSS)

+----------------------------+    +-----------------------------+ 
|       |    |        | 
|       |    |        | 
|       |    |        | 
| +--------+ +--------+ |    | +--------+  +-------+ | 
| |  | |  | |    | |  |  |  | | 
| | client | | nginx | |    | | nginx |  | server| | 
| |  | |  | |    | |  |  |  | | 
| | ws +-------> wss +-------------------------> wss +--------> ws | | 
| |  | |  | |    | |  |  |  | | 
| |  | |  | |    | |  |  |  | | 
| +--------+ +--------+ |    | +--------+  +-------+ | 
|       |    |        | 
|       |    |        | 
+----------------------------+    +-----------------------------+ 

を私は、安全なWebSocketを介してサーバとクライアントを接続したいです。しかし、直接ではありません。クライアントとサーバーはセキュリティを知らない。

だから、クライアントがに接続します。クライアント側のnginxのは、ポート6277に耳を傾けているws://localhost:6277/wstest

。 Nginxに接続を安全にws.example.com/wstestに転送したい。

nginxのの設定は次のとおりです。

server { 

    server_name localhost; 
    listen 6277; 

    location /wstest { 

     proxy_ssl_certificate   /etc/nginx/ssl/client.crt; 
     proxy_ssl_certificate_key  /etc/nginx/ssl/client.key; 
     proxy_ssl_protocols   TLSv1 TLSv1.1 TLSv1.2; 
     proxy_ssl_ciphers    HIGH:!aNULL:!MD5; 

     proxy_ssl_session_reuse on; 

     resolver 127.0.0.1; 
     proxy_pass https://ws.example.com/wstest; 

     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection $connection_upgrade; 
    } 
} 

クライアント側の設定は動作しません。クライアントが私に次のエラーを返します:The HTTP response from the server [500] did not permit the HTTP upgrade to WebSocket。そして、Nginxは私に"GET /ocpp/cp-1/ws HTTP/1.1" 500 193 "-" "-"を与えます。

私はクライアント側のNginxをバイパスして、クライアントがサーバ側のNginx経由で直接サーバに接続できるようにすると、すべて正常に動作します。

サーバー側のNginxは、wssをwsに変換し、サーバーに接続を転送します。

クライアント側のNginx設定に問題がありますか? wginをNginxでwsに変換することは問題ありません。しかし、Nginxでwsをwssに変換することさえ可能ですか?

答えて

0

私は期待どおりに機能しました。私はちょうど別のリゾルバを設定しなければなりませんでした。例:

resolver 8.8.8.8;