この記事では主にNginxを使ってPHPでリバースプロキシを実装する方法を詳しく紹介しますので、必要な方は参考にしてください
1. プロキシとはサーバー
プロキシサーバー、クライアントがリクエストを送信するとき、それは宛先ホストに直接送信されませんが、プロキシサービスがクライアントのリクエストを受け入れた後、それをホストに送信して受信します。宛先ホストから返された応答。データはプロキシ サーバーのハードディスクに保存され、クライアントに送信されます。
2. プロキシサーバーを使用する理由
1) アクセス速度の向上 ターゲットホストから返されたデータはプロキシサーバーのハードディスクに保存されるため、次回顧客が同じサイトにアクセスすると、データはプロキシ サーバーのハードディスクから直接読み取られ、特に人気のあるサイトではキャッシュの役割を果たし、リクエスト速度が大幅に向上します。
2) ファイアウォール機能
すべてのクライアントリクエストはプロキシサーバーを介してリモートサイトにアクセスする必要があるため、特定の安全でない情報をフィルタリングするためにプロキシサーバーに制限を設定できます。
3) プロキシ サーバーを介してアクセスできないターゲット サイトにアクセスする
インターネット上には多くのプロキシ サーバーが開発されており、クライアントがアクセスを制限している場合、クライアントは無制限のプロキシ サーバーを介してターゲット サイトにアクセスできます。プロキシサーバーを使用しますので、海外へは行けませんが、外部ネットワークへの直接アクセスも可能です。
2. リバースプロキシ VS フォワードプロキシ1. フォワードプロキシとは何ですか?リバースプロキシとは何ですか?
クライアントとターゲット ホストの間に設定されるフォワード プロキシは、インターネットへの内部ネットワーク接続リクエストをプロキシするためにのみ使用され、クライアントはプロキシ サーバーを指定し、Web サーバーに直接送信される http リクエストを送信する必要があります。 .プロキシサーバー内。
リバース プロキシ サーバーは、頻繁にリクエストされるページをバッファリングすることでサーバーの負荷を軽減し、クライアントのリクエストを内部ネットワーク上のターゲット サーバーに転送し、サーバーから得られた結果を送信します。インターネット上の接続を要求しているクライアントにサーバーが返されます。このとき、プロキシ サーバーとターゲット ホストは外部からはサーバーとして見えます。
2. リバースプロキシの主な用途は何ですか?
現在、多くの大規模 Web サイトではリバース プロキシが使用されています。イントラネットサーバーへの外部ネットワークからの悪質な攻撃を防止し、サーバーの負荷を軽減するためのキャッシュやアクセスセキュリティ制御に加え、負荷分散を実行し、ユーザーリクエストを複数のサーバーに分散することもできます。
Nginx は、近年人気のリバース プロキシ サーバーとして、宛先ホストにインストールされ、主にクライアントのリクエストを転送するために使用されます。バックグラウンドで複数の http サーバーがサービスを提供します。 . nginx の機能 リクエストを後続のサーバーに転送し、現在のリクエストを処理するターゲット ホストを決定します。以下は、Nginx が機能するように構成する方法を示しています。 1. n 個の http サーバーをターゲット ホストとしてシミュレートします
テストでは、2 つの Tomcat インスタンスを使用して 2 つの http サーバーをシミュレートし、Tomcat ポートをそれぞれ 8081 と 8082 に変更します
2. IP ドメイン名を構成します
。 72.49 8081.max.com
192.168.72.49 8082.max.com
3. nginx.conf を設定します
upstream tomcatserver1 { server 192.168.72.49:8081; } upstream tomcatserver2 { server 192.168.72.49:8082; } server { listen 80; server_name 8081.max.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://tomcatserver1; index index.html index.htm; } } server { listen 80; server_name 8082.max.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://tomcatserver2; index index.html index.htm; } }
1) ローカルブラウザのホストファイルドメインを通じて 8081.max.com にアクセスします。名前解決、192.168.72.49 サーバーを見つけます (nginx をインストール)
2) nginx リバース プロキシはクライアント リクエストを受け入れ、server_name 8081.max.com のサーバー ノードを見つけ、それに対応する http パスに従ってリクエストをサーバーに転送します。 proxy_pass 上流の tomcatserver1、つまりポート番号 8081 の Tomcat サーバー上。
4. エフェクト表示
リクエスト8081.max.com、tomcat1が受信してホームページに戻る
リクエスト8082.max.com、tomcat2が受信してホームページに戻る 4.まとめ
合格した分析 Baidu を例にとると、クライアントの IP と Baidu サーバー (ターゲット ホスト) の IP が同じネットワーク セグメントにある場合、それは次と同じであると結論付けるのは難しくありません。 LAN 内でリクエストを送信するため、非常に高速です。
ただし、この要求が満たされず、より良いリクエスト応答を達成したい場合は、Baidu サーバーは、ターゲット サーバーと同じネットワーク セグメント内のパブリック IP、つまり、プロキシを介してリバース プロキシ サービスの IP を提供できます。サーバー クライアント要求を転送し、バックグラウンドでどのサーバーが要求を処理するかを決定します。 リバース プロキシ サーバーとターゲット ホストは同じネットワーク セグメント内にあるため、アクセス速度は非常に高速になります。
Nginx をリバース プロキシ サーバーとして使用する場合、サーバー IP またはドメイン名アドレスを指定するだけで、多数のリバース プロキシ サーバーのうちの 1 つとして、クライアントのリクエストを指定されたサーバーに転送してリクエストを処理できます。
以上がPHP は Nginx を使用してリバース プロキシを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。