Linuxのノート - 章二十は、nginxのリバースプロキシとロードバランシングを設定します

I.はじめに

そのためnginxのリバースプロキシと負荷分散のしばしば言及したので、これら2つの機能を説明するために白羽されます。

実際には、ちょうどnginxのnginxのプロキシとしては、パフォーマンスのリバースプロキシ機能の効果は、クラスター効果をロードバランシングがあるので、プロキシの使用を逆にするので、nginxの負荷分散と呼んでいます。その後、それはどのような違いを生むん均衡プロキシと負荷を逆?

通常、このような有名などのソフトウェア負荷分散、LVS、実際には、要求パケットを転送する機能(パケットデータも書き換えることができる)、トランスミッション、DRモードは、受信された視点をバランス次ノードサーバー負荷の特徴から明らかである請求要求またはロードバランサ、クライアントの実際のユーザーからのアクセス、および同じリバースプロキシは、ユーザの要求にリバースプロキシのアクセスが受信されていないが、ユーザーエージェントは、ノードサーバのリクエスト・ブローカーの下で再起動し、クライアントに返し、最終的データになりますエンドユーザー、サーバーノードビュー、サーバーへのクライアント・ユーザー・ノードへのアクセスは、リバースプロキシサーバーではなく、利用者のウェブサイトへの本当のアクセスです。

したがって、LVSロードバランシングのようなパケット転送は、ユーザによって要求され、そしてnginxのリバースプロキシは、ユーザの要求を受信した後、再びその背後にある要求ノードに要求を開始します。

nginxのコンポーネントは、2つの主な理由をロードバランシングを達成するために:

1)proxy_pass命令が別のサーバーに要求を転送することができるngx_http_proxy_moduleモジュールは、所属、リバースプロキシに実際の作業では、関数は、ロケーションURIマッチングによって指定され、その要求は、URIがproxy_passによって受信されたマッチングを満たします定義された上流のノードプールを投げ。

2)nginxの負荷分散機能がngx_http_upsteam_moduleモジュールに依存している、などproxy_pass、fastcgi_pass、memcached_pa​​ssを、含まれ、新しいソフトウェアは、nginxのが増加している方法をサポートしているプロキシモードをサポートしています。この記事ではproxy_passプロキシモードを説明します。
ngx_http_upstream_module nginxのモジュールは、「proxy_passはhttp:// www_server_pools」などの具体的な文言を使用して事前に定義されたグループ名上流proxy_passプロキシモードに対応したサイトにリクエストを送信することができ、ノードグループサーバで定義された1つ以上のグループを可能にします、ノードサーバグループ名である上流www_server_pools。

nginxのリバースプロキシの重要なパラメータ:

二、nginxのリバースプロキシ

nginxのリバースプロキシは、ユーザーがWebサーバーにアクセスしたとき、ネットワークが通信できないことがあり、ほとんどのWebサーバーのみのプライベートIPので、Webサーバーにアクセスする場合、サーバーを見つけることができる、Webサーバーとなるように唯一できることを意味しますサーバーの相互運用性だけでなく、通信すると、それはプロキシサーバではなく、クライアントであるため、ユーザーは、このサーバーは、リバースプロキシサーバーです。

以下のように、まず、yumをnginxのをインストールし、その後に/ etc / nginxのディレクトリを入力して、仮想ホストディレクトリのバーチャルホストを作成し、新しい仮想ホストの設定ファイルproxy.confを作成します。

[ルート@のマスター・ノードのnginxの]#のMKDIRの/ etc / nginxの/ バーチャルホスト
[ルート@のマスター・ノードのnginxの]#のVIMの/ etc / nginxの/バーチャルホスト/ proxy.confの
サーバ{ 
    聞く        80 
    SERVER_NAME www.baidu.com; 

    位置 / { 
        proxy_passのhttp:// 14.215.177.39。
        proxy_set_header HOSTの$ホスト; 
        proxy_set_header X -Real- IP $ REMOTE_ADDR。
        proxy_set_header X -Forwarded- $ proxy_add_x_forwarded_forについては、
    } 
}

上記構成www.baidu.com、proxy_pass命令にエージェントはリバースプロキシの実際の作業では、別のサーバに要求を転送することができるngx_http_proxy_moduleモジュールは、所属することを示し、機能は場所によって指定されるURIは、次に、一致します要求に沿って上流ノードプールで定義されたスローURIのproxy_passと一致しました。

その後、次のように、nginxのマスターnginx.conf設定ファイルを変更します。

[ルート@マスター・ノードのnginxの]#1 のvi /etc/nginx/nginx.conf

}一番上の行で終了記号が追加されます。

。バーチャルホスト/ * confに含ま;

これは、ブート時にnginxのを表しているすべてのファイルのバーチャルホストのconfディレクトリをロードします。

エラーのnginxの設定ファイルをチェックし、次のように:

[ルート@のマスター・ノードのnginxの]#のnginxの- トン
のnginx:設定ファイルは/ etc / nginxの/ nginx.conf構文はokです
nginxの:コンフィギュレーションファイル /etc/nginx/nginx.confテストは成功です

nginxの開始、およびへのアクセス、次のことを確認します。

nginxのリバースプロキシによってwww.baidu.comへの通常のアクセス。

他のドメイン名へのアクセス中に別のドメインへの代理店がないので、したがって、唯一のデフォルトのホームページnginxのに戻ることができます。

三、nginxのロードバランシング

二つ以上のプロキシサーバのプロキシと呼ばれるプロキシサーバは、負荷分散と呼ばれます。プロキシサーバーの背後にサービスを提供するために、負荷分散機能を実現するために複数のWebサーバー、複数のWebサーバーにすることができます。通常の状況下では、ないプロキシサービスならば、ユーザーは一つだけ要求にWebサーバープラットフォームにアクセスするか、IPを指定するか、または複数のDNSサーバは、ユーザAがサーバにアクセスするように、2つのユーザーアクセスサーバB、ように。Aサーバーがダウンした場合、ユーザは、サーバAを解決するため、これは、ではなく、非常にフレンドリーな操作、かもしれないが、サイトにアクセスすることはできません。

サーバーがダウンしている場合nginxの負荷分散では、プロキシサーバーは、サーバーAに要求しません。nginxのロードバランシングは、それがproxy_passにおけるIPの複数定義することができない、上流のモジュールを意味するが、以下上流IP複数の定義されてもよいです。

Www.baidu.com以下のDNSのIPアドレスを表示するためにdigコマンドを使用し、検証するために、インストールされていない、あなたは次のように、インストールにyumを使用することができます。

[ルート@マスター・ノードのバーチャルホスト]#yumを インストール -yバインドにutilsの
[ルート@のマスター・ノードのバーチャルホスト]#掘るwww.baidu.com 
...... 
;; ANSWERセクション:
www.baidu.com。          46       、IN CNAME www.a.shifen.com。
www.a.shifen.com。       157      、IN        14.215177.38 
www.a.shifen.com。       157      、IN        14.215177.39 
......

DNSはwww.baidu.comとしてCNAMEレコード(対応する別名)はwww.baidu.com www.a.shifen.comマッピングレコードのDNSサーバにジャンプするように構成され、解析プロセスに見ることができます。そしてwww.a.shifen.com(アドレス)レコードとして、実際のIP情報にマッピングされています。

次のように、コンフィギュレーション・ファイルのロードbalance.confロードバランシングを作成します。

[マスター・ノード@ルートのバーチャルホスト]#のVimは/ etc / nginxの/バーチャルホスト/荷重- balance.conf 
上流baidu_com { 
    #ip_hashのnginxのは、同じクライアント要求のIPと同じサーバーにするロードバランシングアルゴリズムである
    ip_hashを、
    サーバー14.215177.38:80 ;#は、実サーバのアドレスを定義
    サーバー14.215を177.39:80 ; 
} 
サーバー{ 
    聞く        80 ;#リスニングポート
    サーバー名www.baidu.com;#ドメイン

    LOCATION / { 
        proxy_pass HTTP:// baidu_com; 
        proxy_set_headerます$ HOSTホスト、
        X- proxy_set_header -Real- IP $ REMOTE_ADDRを。 
        proxy_set_header X--Forwarded- $ proxy_add_x_forwarded_forについて; 
    } 
}

リバースプロキシ設定ファイルproxy.confを削除する前に、nginxのサービスを停止し、その後、nginxのを再起動し、通常の状況下で、カール-x127.0.0.1:80 www.baidu.comは、デフォルトのページnginxのに戻りますが、ヘビーデューティー仕上げます次のように負荷balance.conf後、百度を再訪、Baiduのホーム・ページには、通常表示されます:

書き込みポート443がサポートされていない場合はnginxのは、nginxのプロキシのみHTTPとTCP、サーバーの背後に、プロキシHTTPSをサポートしていません。あなたは、ユーザーがHTTPSを見ることができるように、プロキシHTTPSにしたい場合は、バックエンドサーバーがプロキシサーバーのポート443でリスニング、80ポートである必要があり、ポート443は、プロキシサーバを持つユーザーに返されます。

おすすめ

転載: www.cnblogs.com/cnjavahome/p/11483641.html