nginxはWebSocketのプロキシをサポートするようになりましたが、WebSocketが使用されるURIに適用される個別のロケーションブロックがないと、これを行う方法に関する情報を見つけることができませんでした。
私はこのアプローチのいくつかのバリエーションを推奨する何人かの人々を見てきました:
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://host:port;
}
これは、標準のHTTPとWebSocketをプロキシする正しい方法でしょうか?
ブラウザが送信したものでない限り、Upgrade
ヘッダーやConnection
設定は必要ありませんが、これらの行はWebSocketが機能するために必要です。upgrade
proxy_set_header
なぜnginxは元のUpgrade/Connectionヘッダーを転送しないのですか?
これを試してみたところ、nginxはヘッダーをプロキシせず、2行なしで実行している場合はヘッダーをからUpgrade
に変更することがわかりました。それらを使用すると、WebSocket以外のリクエスト用になりますが、これも悪いことです。Connection
close
upgrade
proxy_set_header
Connection
upgrade