ホームページ  >  記事  >  バックエンド開発  >  PHPでNginxを使用してリバースプロキシを実装する方法

PHPでNginxを使用してリバースプロキシを実装する方法

黄舟
黄舟オリジナル
2017-09-21 09:14:073634ブラウズ

この記事では、主に Nginx を使用して PHP でリバース プロキシを実装する方法を詳しく紹介します。興味のある方は参考にしてください。1. プロキシ サーバーとは何か。サーバー

クライアントがリクエストを送信する場合、リクエストは宛先ホストに直接送信されず、プロキシ サービスがクライアントのリクエストを受け入れた後に送信されます。返されたデータはプロキシ サーバーのハードディスクに保存され、クライアントに送信されます。

2. プロキシサーバーを使用する理由


1) アクセス速度の向上

ターゲットホストから返されたデータはプロキシサーバーのハードディスクに保存されるため、次回顧客が同じサイトにアクセスすると、データはプロキシ サーバーのハードディスクから直接読み取られ、特に人気のあるサイトでは、リクエスト速度が大幅に向上します。 2) ファイアウォール機能 すべてのクライアントリクエストはプロキシサーバーを介してリモートサイトにアクセスする必要があるため、プロキシサーバーに制限を設定して、特定の安全でない情報をフィルタリングできます。

3) プロキシ サーバーを介してアクセスできないターゲット サイトにアクセスする

インターネット上には多くのプロキシ サーバーが開発されており、クライアントがアクセスを制限している場合、クライアントは無制限のプロキシ サーバーを介してターゲット サイトにアクセスできます。プロキシサーバーを使用しますので、海外へは行けませんが、外部ネットワークへの直接アクセスも可能です。

2. リバースプロキシ VS フォワードプロキシ

1. フォワードプロキシとは何ですか?リバースプロキシとは何ですか?

フォワード プロキシは、クライアントとターゲット ホストの間にインストールされます。これは、内部ネットワークからインターネットへの接続リクエストをプロキシするためにのみ使用され、クライアントはプロキシ サーバーを指定し、HTTP リクエストをクライアントに直接送信する必要があります。プロキシサーバー内。


リバース プロキシ サーバーは、頻繁にリクエストされるページをバッファリングすることでサーバーの負荷を軽減し、クライアントのリクエストを内部ネットワーク上のターゲット サーバーに転送し、サーバーから得られた結果を送信します。インターネット上の接続を要求しているクライアントにサーバーが返されます。このとき、プロキシ サーバーとターゲット ホストは外部からはサーバーとして見えます。


2. リバースプロキシの主な用途は何ですか?

現在、多くの大規模 Web サイトではリバース プロキシが使用されています。イントラネットサーバーへの外部ネットワークからの悪質な攻撃を防止し、サーバーの負荷を軽減するためのキャッシュやアクセスセキュリティ制御に加え、負荷分散を実行し、ユーザーリクエストを複数のサーバーに分散することもできます。

3. 方向性プロキシ サーバー Nginx

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 のサーバー ノードを見つけ、tomcatserver1 の proxy_pass に対応する http パスに従って要求をアップストリームに転送します。 、つまり、ポート番号 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。