WebSocket プロトコルは http プロトコルに基づいてアップグレードされるため (次の図を参照)、nginx リバース プロキシ Websocket を使用できます。
websocket
From この図からわかるように、WebSocket 接続は http プロトコルに基づいて確立されます。
get /chat http/1.1 host: server.example.com upgrade: websocket connection: upgrade sec-websocket-key: x3jjhmbdl1ezlkh9gbhxdw== sec-websocket-protocol: chat, superchat sec-websocket-version: 13 origin: http://example.com
http に詳しいお子様は、このハンドシェイク リクエストに http プロトコルに似たものがさらにいくつかあることに気づいたかもしれません。
upgrade: websocket connection: upgrade 这个就是websocket的核心了,告诉apache、nginx等服务器:我发起的是websocket协议。 sec-websocket-key: x3jjhmbdl1ezlkh9gbhxdw== sec-websocket-protocol: chat, superchat sec-websocket-version: 13
まず第一に、sec-websocket-key はブラウザによってランダムに生成される Base64 エンコード値です。サーバーに次のように伝えます。「ピート、騙さないでください。あなたがそうであるかどうかを確認したいのです」まさに WebSocket アシスタントです。
最後に、sec-websocket-version は、使用されている WebSocket ドラフト (プロトコル バージョン) をサーバーに伝えます。当初、WebSocket プロトコルはまだドラフト段階にあり、あらゆる種類の奇妙なプロトコルがありました。 Firefox と Chrome ではバージョンが異なり、当初は WebSocket プロトコルが多すぎて大きな問題でした。 。みんなが使っているもの
#その後、サーバーはリクエストが受け入れられ、WebSocket が正常に確立されたことを示す次の内容を返します。http/1.1 101 switching protocols upgrade: websocket connection: upgrade sec-websocket-accept: hsmrc0smlyukagmm5oppg2hagwk= sec-websocket-protocol: chatこれは、http が担当する最後の領域です。プロトコルの切り替えに成功したことをクライアントに伝えます~
upgrade: websocket connection: upgradeはまだ修正されており、今後のアップグレードが WebSocket であることをクライアントに伝えますプロトコル。この時点で、http はすべての作業を完了しており、次のステップは WebSocket プロトコルに従って完全に進むことです。 プロトコルの原理を理解したら、次のステップに進むことができます。
まず、nginx は https 証明書を構成します。
サーバー証明書はbossによって設定されているため、私はそれを直接使用しました。 0.0次の設定を nginx 設定ファイルのservice ノードに追加します
location /wss { proxy_pass http://127.0.0.1:8888; proxy_http_version 1.1; proxy_set_header upgrade $http_upgrade; proxy_set_header connection "upgrade"; proxy_set_header x-real-ip $remote_addr; }
パラメータの説明
/wss これはランダムに設定されます。nginx にプロキシされる URL を伝えます。現在の設定は
wss です。サーバーにアクセスすると
https:/ / abc.com/wss、nginx は私のリクエストをローカル ポート 8888 にマップします。
proxy_pass プロキシ先の URL。私のプロキシはこのマシンのポート 8888 です。
proxy_http_version プロキシ時に使用される http バージョン。
ここが重要なポイントです:
プロキシ Websocket の主要パラメータproxy_set_header upgrade プロキシ時に http リクエスト ヘッダーを変更する
upgrade は元の http リクエストのリクエスト ヘッダーに設定され、wss プロトコルのリクエスト ヘッダーは
websocket
proxy_set_header connection プロキシのためwss プロトコル、http リクエスト ヘッダーは
connection に設定します
upgrade
元の IP を設定しますhttp リクエストをプロキシに送信し、#$remote_addr を入力します。
WebSocket プロトコルの応答パラメータについては、リバース プロキシ中には気にする必要はありません。
wss://abc.com/wss## を入力します。 #。 Web ソケットが正常に接続された場合は、nginx リバース プロキシ Web ソケットが成功したことを意味します。
概要
現在の構成は、このマシンにリバース プロキシ接続する場合の構成のみです。他のホストにリバース プロキシ接続する場合は、プロキシがドメインを越える可能性があります。問題は、クロスドメイン構成を nginx のリバース プロキシで行う必要があることです。
思考この段落はnginxの設定ファイルにありますlocation ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param script_filename $document_root$fastcgi_script_name;
include fastcgi_params;
}
これはnginxのphpの設定ファイルなので削除させてくださいそれはどうやって? 見覚えがあるように見えますが、この構成リストは、先ほどの WebSocket リバース プロキシに非常に似ています。ネットで調べたところ、nginxがPHP系のリクエストを処理する際、fastcgi管理プロセスにリクエストを送り、fascgi管理プロセスがcgiサブプロセスの処理結果を選択してnginxに返す、php-fpmというPHPであることが分かりました。 fastcgi マネージャー. nginx 自体は PHP を処理できません。単なる Web サーバーです。リクエストを受信すると、それが PHP リクエストであれば、処理のために PHP インタプリタに送信され、結果がクライアントに返されます。したがって、nginx が PHP タイプのリクエストを処理する場合、基本的にリバース プロキシ機能を通じて実装されます。
考え方を拡張し、nginx リバース プロキシを使用して、プロキシ tomcat
location /tomcat { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header x-real-ip $remote_addr; }などのより多くの機能を実現できます。
以上がnginxリバースプロキシWebSocketを構成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

NginxとApacheにはそれぞれ独自の利点と欠点があり、選択は特定のニーズに基づいている必要があります。 1.Nginxは、非同期の非ブロッキングアーキテクチャのため、高い並行性シナリオに適しています。 2。Apacheは、モジュラー設計のため、複雑な構成を必要とする低変動シナリオに適しています。

Nginxunitは、複数のプログラミング言語をサポートし、動的構成、ゼロダウンタイム更新、組み込みのロードバランシングなどの機能を提供するオープンソースアプリケーションサーバーです。 1。動的構成:再起動せずに構成を変更できます。 2。多言語サポート:Python、Go、Java、PHPなどと互換性があります。 4。ビルトインロードバランシング:リクエストは、複数のアプリケーションインスタンスに配布できます。

nginxunitは、多言語プロジェクトや動的な構成要件に適した、apachetomcat、gunicorn、node.jsビルトインHTTPサーバーよりも優れています。 1)複数のプログラミング言語をサポートします。2)動的な構成リロード、3)高いスケーラビリティと信頼性を必要とするプロジェクトに適した組み込みの負荷分散機能を提供します。

Nginxunitは、モジュラーアーキテクチャと動的な再構成機能により、アプリケーションのパフォーマンスと管理性を向上させます。 1)モジュラー設計には、マスタープロセス、ルーター、アプリケーションプロセスが含まれ、効率的な管理と拡張をサポートします。 2)動的再構成により、CI/CD環境に適した、実行時に構成をシームレスに更新できます。 3)多言語サポートは、言語ランタイムの動的なロードを通じて実装され、開発の柔軟性が向上します。 4)イベント駆動型モデルと非同期I/Oによって高性能が達成され、高い並行性の下でも効率的なままです。 5)申請プロセスを分離し、アプリケーション間の相互の影響を減らすことにより、セキュリティが改善されます。

nginxunitを使用して、アプリケーションを複数の言語で展開および管理できます。 1)nginxunitをインストールします。 2)PythonやPHPなどのさまざまなタイプのアプリケーションを実行するように構成します。 3)アプリケーション管理に動的構成関数を使用します。これらの手順を通じて、アプリケーションを効率的に展開および管理し、プロジェクトの効率を向上させることができます。

NGINXは、高い並行接続の処理に適していますが、Apacheは複雑な構成とモジュール拡張が必要なシナリオにより適しています。 1.Nginxは、高性能と低リソース消費で知られており、高い並行性に適しています。 2. Apacheは、その安定性とリッチモジュール拡張機能で知られています。これは、複雑な構成ニーズに適しています。

Nginxunitは、動的な構成と高性能アーキテクチャにより、アプリケーションの柔軟性とパフォーマンスを向上させます。 1.動的構成により、サーバーを再起動せずにアプリケーション構成を調整できます。 2.高性能は、イベント駆動型および非ブロッキングアーキテクチャおよびマルチプロセスモデルに反映され、同時接続を効率的に処理し、マルチコアCPUを利用できます。

NginxとApacheはどちらも強力なWebサーバーであり、それぞれがパフォーマンス、スケーラビリティ、効率の点で独自の利点と短所を備えています。 1)nginxは、静的なコンテンツを処理し、逆プロキシを逆にするときにうまく機能します。 2)Apacheは、動的コンテンツを処理するときにパフォーマンスが向上し、リッチモジュールサポートが必要なプロジェクトに適しています。サーバーの選択は、プロジェクトの要件とシナリオに基づいて決定する必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1
使いやすく無料のコードエディター

ホットトピック









