Swoole は、PHP 言語用の軽量で高性能なネットワーク通信ライブラリであり、その登場により、PHP アプリケーションのパフォーマンスとスケーラビリティが大幅に向上しました。 Nginx は人気のある Web サーバーであり、リバース プロキシや負荷分散にも広く使用されています。 Swoole で Nginx のリバース プロキシと負荷分散を使用すると、Swoole をより効果的に活用できます。以下は、Nginx を使用して Swoole リバース プロキシと負荷分散を実装するチュートリアルです。
まず、Nginx をインストールする必要があります。これは、次のコマンドでインストールできます:
sudo apt-get update sudo apt-get install nginx
インストールが完了したら、Nginx を設定する必要があります。設定ファイルは /etc/nginx/sites-available/default にあります。編集用にファイルを開いて、次の内容に変更します。
upstream swoole { server 127.0.0.1:9501 weight=10 max_fails=3 fail_timeout=30s; server 127.0.0.1:9502 weight=5 max_fails=3 fail_timeout=30s; } server { listen 80; server_name example.com; location / { proxy_pass http://swoole; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
上記の構成ファイルでは、Swoole サービスによって監視される 2 つのアドレスと重みが含まれる swoole という名前のアップストリームを定義しました。また、ポート 80 をリッスンし、リバース プロキシ経由で swoole クラスターにリクエストを分散するように仮想ホストを設定しました。
次に、Nginx によって転送されたリクエストを受信するための単純な Swoole サービスを作成する必要があります。以下は簡単なサンプル コードです。
<?php $http = new SwooleHttpServer("0.0.0.0", 9501); $http->on('request', function ($request, $response) { $response->header("Content-Type", "text/plain"); $response->end("Hello World "); }); $http->start();
上記のコードでは、ポート 9501 でリッスンする Swoole Http サービスを作成し、リクエスト コールバック関数で Hello World 文字列を返しました。
次のコマンドを実行して Swoole サービスを開始します:
php server.php
この時点で、Swoole サービスは正常に開始されました。ポート 9501 でリッスンしています。
最後に、次のコマンドを実行して Nginx を起動します。
sudo service nginx start
この時点で、Nginx は正常に起動され、アクセスできるようになります。 http://example.com/ にアクセスして、Swoole サービスの応答をテストします。
Nginx の負荷分散機能をテストするには、別の Swoole Http サービスを開始して別のサーバーをシミュレートし、次のコマンドを実行して開始します。 :
php server.php --port=9502
このとき、Nginx 設定ファイルでは、swoole クラスター内の 1 つのポートの重みを 10 として、もう 1 つのポートの重みを 5 として定義しました。つまり、Nginx はリクエストの約 2/3 をポート 9501 に転送し、リクエストの 1/3 をポート 9502 に転送します。ブラウザで http://example.com/ を複数回更新することで、負荷分散機能をテストできます。
まとめ
以上の作業により、Nginxのリバースプロキシ機能と負荷分散機能をSwooleに実装することができました。 Nginx のリバース プロキシおよびロード バランシング機能は、Swoole アプリケーションでのリクエストの分散を改善し、動的 Web サイトの同時実行性と安定性を向上させるのに役立ちます。
以上がSwoole での Nginx リバース プロキシとロード バランシングの使用に関するチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。