sockjs-node によって報告されたエラーの解決策: 1. nginx でポート 9097 を構成します; 2. 「/sockjs-node」がマシンの実際のポートに適切にプロキシされることを許可します。
この記事の動作環境: Windows 7 システム、nodejs バージョン 10.16.2、Dell G3 コンピューター。
sockjs ノードのエラー報告の問題を解決するにはどうすればよいですか?
sockjs-node インターフェイス エラーの解決策
他の人の angular プロジェクトを引き継いだとき (vue.js でもこの問題が発生する可能性があります)、nginx がクロスドメイン フロントエンドで構成されていました。プロジェクトが開始された後、バックグラウンドでエラーが報告されました。次の図に示すように:
インターネットでエラーの原因を検索したところ、sockjs-node が nodejs のホットロード インターフェイスであることがわかりました。ブラウザとローカル通信に使用されますが、このときホットロード機能は失敗します。したがって、エラーの原因は、この通信インターフェイスが実際のサービスが開始される 8082 ポートではなく、nginx プロキシの 9097 ポートにアクセスするため、通信が実行できないということです。
問題を解決するために、/sockjs-node が通常、マシンの実際のポートにプロキシできるように、nginx でこの 9097 ポートを構成します。
具体的な対策:
nginx に nginx 設定を追加
http { include mime.types; default_type application/octet-stream; map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 9097; server_name localhost; location /sockjs-node { proxy_pass http://0.0.0.0:8082; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } }
注: 上記に関して最も重要なことは、リバース プロキシ設定に次の 2 行を追加することです。この部分と通常の HTTP リバース プロキシに違いはありません。
roxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
ここで重要なのは、HTTP リクエストに次のヘッダーがあることです。
Upgrade: websocket
Connection: Upgrade
これら 2 つフィールドは、サーバーがプロトコルを WebSocket にアップグレードするように要求されていることを示します。
実際の状況では、Shadowsock プロキシ、nodejs の設定など、/sockjs-node エラーが報告される理由は数多くある可能性があります。問題の性質を理解している限り、 ws がローカルの実際のアドレスにアクセスできるようにするには、アドレスで十分です。
推奨学習: 「nodejs ビデオ チュートリアル 」
以上がsockjs-node エラー報告の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。