PHP と Nginx は、Web 開発の分野で広く使用されている 2 つの強力なツールです。これらは、それぞれ PHP 言語プログラミングをサポートし、高速で効率的な Web サーバーを提供するために使用できます。ただし、PHP と Nginx を併用すると、リバース プロキシやロード バランシングなど、より強力な機能を実現できます。この記事では、より強力な Web サービスを実現するための PHP と Nginx の統合について詳しく説明します。
1. リバース プロキシ
従来のプロキシ サーバーでは、クライアントはプロキシ サーバーにリソースを要求し、プロキシ サーバーはその要求を実サーバーに転送し、その結果をサーバーに返します。クライアント。リバース プロキシ サーバーはクライアントと実サーバーの間の仲介者として機能し、クライアントがリバース プロキシ サーバーへのリクエストを開始すると、リバース プロキシ サーバーはそのリクエストを実サーバーにルーティングして結果をクライアントに返します。このアプローチの利点は、すべての要求と応答がリバース プロキシ サーバーを経由するため、クライアントが実サーバーの存在を意識する必要がないことです。
Nginx を使用してリバース プロキシを実装できます。 Nginx は、バックエンドの実サーバーにリクエストを転送するための proxy_pass ディレクティブを提供します。以下は、単純なリバース プロキシ構成の例です。
server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
この構成では、すべてのリクエストがバックエンド サーバー http://backend_server に転送され、リクエスト ヘッダーのホストと X-Real-IP が変更され、X- Forwarded-For フィールドは対応する値に設定されます。こうすることで、バックエンド サーバーはこれらのリクエストを正しく処理できます。
2. 負荷分散
トラフィック量の多い Web サイトでは、同じサービス エンドポイントが複数のクライアントから同時に要求される可能性があり、これによりサービス エンドポイントが過負荷になり、性能劣化の為。この状況を回避するには、負荷分散ソリューションを使用します。負荷分散の考え方は、複数のサービス エンドポイントを 1 つに結合し、特定のアルゴリズムを使用してリクエストを各サービス エンドポイントに均等に分散することで、特定のサービス エンドポイントが過負荷になる状況を回避することです。
Nginx では、アップストリーム モジュールを使用して負荷分散を実現できます。アップストリーム モジュールは、バックエンド サーバーを表すブロックを提供し、個々のサービス エンドポイントのアドレスとその他のパラメーターを定義します。以下は、ポーリング アルゴリズムに基づく負荷分散の例です。
http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
この構成では、アップストリーム ブロックは 3 つのサービス エンドポイント backend1.example.com、backend2.example.com、backend3.example.com を定義します。また、負荷分散アルゴリズムは指定されておらず、デフォルトでポーリング アルゴリズムが使用されます。サーバー ブロックでは、すべてのリクエストがアップストリーム バックエンド グループの各サービス エンドポイントに転送され、リクエスト ヘッダーの Host、X-Real-IP、および X-Forwarded-For フィールドが正しく設定されます。
3. PHP の統合
PHP と Nginx を統合するにはさまざまな方法がありますが、最も簡単な方法は FastCGI を使用することです。 FastCGI は、長い接続を使用してデータを送信し、より効率的なパフォーマンスを備えた CGI のアップグレード バージョンです。 Nginx では、FastCGI プロトコルを使用して PHP インタープリターと Web サーバーを接続できます。
以下は、PHP と Nginx を統合する方法を示す簡単な Nginx 構成例です:
http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; server_name example.com; # PHP configuration location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # Reverse proxy configuration location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
この構成では、.php で終わるすべてのリクエストを FastCGI プロセスに転送します。リクエストは次のとおりです。その後、バックエンド サービス エンドポイントに転送されます。 FastCGI プロトコルを使用すると、PHP コードが Nginx とより効率的に対話できるようになります。
上記は、リバース プロキシとロード バランシングを実現するための PHP と Nginx の統合の基本的な内容です。これらの機能により、より効率的で信頼性が高く安全なWebサービスを実現できます。高トラフィックの Web サイトまたはアプリケーションの開発を準備している場合は、パフォーマンスとスケーラビリティを向上させるために、PHP と Nginx の統合の使用を検討してください。
以上がPHP と Nginx の統合によるリバース プロキシとロード バランシングの実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。