私は次のセットアップがあります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に変換することさえ可能ですか?