web-dev-qa-db-ja.com

Spring WebSocket:無効なアップグレードヘッダーが原因でハンドシェイクが失敗しました:null

私は、バックエンドからのSpringとJavaScriptクライアントのSTOMPでwss(セキュアなWebソケット)を使用しています。

誰もがなぜ得るのか知っていますか:

Handshake failed due to invalid Upgrade header: null
17
mspapant

Tomcatへのnginx httpsプロキシで同じ問題に遭遇しました。これは、私がwssリクエストをサポートしていないためです。 wssリクエストをサポートするために、以下のような設定を使用します。

# WebSocketSecure SSL Endpoint
#
# The proxy is also an SSL endpoint for WSS and HTTPS connections.
# So the clients can use wss:// connections 
# (e.g. from pages served via HTTPS) which work better with broken 
# proxy servers, etc.

server {
    listen 443;

    # Host name to respond to
    server_name ws.example.com;

    # your SSL configuration
    ssl on;
    ssl_certificate /etc/ssl/localcerts/ws.example.com.bundle.crt;
    ssl_certificate_key /etc/ssl/localcerts/ws.example.com.key;

    location / {
        # switch off logging
        access_log off;

        # redirect all HTTP traffic to localhost:8080
        proxy_pass http://localhost:8080;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $Host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # WebSocket support (nginx 1.4)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
23
Jonguo

最後に、私は解決策を見つけました。

Wssリクエストを処理するために、Tomcatでhttpsポートを開く必要がありました。

0
mspapant