Websocketプロキシ用のnginxを構成するには、nginxがWebSocketプロトコルとそのアップグレードリクエストを適切に処理できるようにする必要があります。これをセットアップする方法に関する段階的なガイドを次に示します。
/etc/nginx/nginx.conf
nginx.confにあるか、サイト固有の構成のために/etc/nginx/sites-available/
内にあります)。 WebSocketプロキシ設定を追加します:
WebSocketサポートを有効にするhttp
またはserver
ブロック内で、次の構成スニペットを追加します。
<code class="nginx">http { ... server { listen 80; server_name example.com; location / { proxy_pass http://your_backend_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } }</code>
proxy_http_version 1.1
、nginxがwebsocket接続に必要なHTTP/1.1を使用することを保証します。proxy_set_header Upgrade $http_upgrade
およびproxy_set_header Connection "upgrade"
WebSocketアップグレードリクエストを処理するために重要です。proxy_cache_bypass $http_upgrade
Websocket接続がキャッシュをバイパスすることを保証します。これは一般的に適切です。nginx -t
で構文エラーの構成をテストし、 sudo systemctl reload nginx
またはsudo systemctl restart nginx
。 nginxがWebSocket接続を適切に処理できるようにするには、NGINX構成のlocation
ブロック内で次の設定が必要です。
proxy_pass
:Websocketリクエストがプロキシになるバックエンドサーバーを指定します。proxy_http_version 1.1
:websocket接続に必要なHTTPプロトコルバージョンを1.1に設定します。proxy_set_header Upgrade $http_upgrade
: Upgrade
ヘッダーの値をクライアントからバックエンドサーバーに渡します。proxy_set_header Connection "upgrade"
: Connection
ヘッダーを「アップグレード」に設定し、WebSocketアップグレードリクエストに合図します。proxy_set_header Host $host
:ホストヘッダーをクライアントからバックエンドサーバーに渡します。proxy_cache_bypass $http_upgrade
:websocket接続をキャッシュしてはならないため、WebSocket接続がキャッシュをバイパスすることを保証します。これらの設定は、WebSocket接続が正しく処理され、バックエンドサーバーに転送されるように協力します。
NginxがWebSocketプロトコルのアップグレードを正しく処理するようにするには、前のセクションで説明したように必要な構成を実装する必要があります。アップグレードが適切に処理されていることを確認するための追加のヒントを次に示します。
proxy_set_header Upgrade $http_upgrade
およびproxy_set_header Connection "upgrade"
を含めたことを確認してください。/var/log/nginx/
にあります。 WebSocketのアップグレードが成功しても、エラーが記録されません。wscat
やwebsocat
などのコマンドラインツールを使用して、WebSocket接続を手動で開始し、Nginxを介して正常に接続することを確認します。これらの手順に従うことにより、NginxがWebsocketプロトコルのアップグレードを正しく処理していることを確認できます。
nginxでのProxingのWebsocketの問題に遭遇した場合は、これらのトラブルシューティング手順に従ってください。
http
、 server
、およびlocation
ブロックに正しく追加されていることを確認します。 nginx -t
を使用して、構文エラーの構成をテストします。/var/log/nginx/
)を調べます。 WebSocket Connectionsとアップグレードリクエストに関連するエントリを探します。wscat
やwebsocat
などのツールを使用して、コマンドラインから直接WebSocket接続をテストします。これは、問題がNginxまたはバックエンドサーバーのかどうかを分離するのに役立ちます。proxy_read_timeout
とproxy_send_timeout
を調整します。これらのトラブルシューティング手順を体系的に通過することにより、nginxでプロキシングするWebsocketの問題を特定して解決できるはずです。
以上がWebsocketプロキシにnginxを構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。