NginxをWebサーバー“以外”でも徹底活用するこれから始める人のためのNginx(3)(2/4 ページ)

» 2014年09月18日 17時47分 公開
[鶴長鎮一@IT]

Nginxをロードバランサーとして活用する

 Nginxを開発したIgor Sysoev氏が目標としたのは、高速なWebアクセラレーションです。Webアクセラレーターは本来のWebサーバーの代わりにクライアントからのリクエストを受け付け、サーバーからのレスポンスをキャッシュ、または複数のサーバーに分散させることでレスポンスを高速化します。この際重要になるのが、リバースプロキシ/ロードバランシング機能です。

図3「Nginxをロードバランサーとして活用する」

リバースプロキシ/ロードバランサーの実現

 Webコンテンツをキャッシュし、反応の遅いWebサイトに代わって応答する一般的なプロキシを「フォワードプロキシ」と呼ぶのに対し、「リバースプロキシ」はクライアントからのリクエストをいったん中継し、他のWebサーバーへリクエストを振り分けます。Nginxはリバースプロキシで、複数のWebサーバーにリクエスト振り分けることでロードバランシングを実現しています。

 例えば「http://Nginxのアドレス/foo」へのアクセスを「192.168.0.2」と「192.168.0.3」にロードバランシングするには、次のようにします。

http {			<--http {...}に以下内容を追加
...
    upstream mycluster {		<--クラスター「mycluster」を定義
        server 192.168.0.2 weight=3;	<--クラスターメンバー(重み3)
        server 192.168.0.3;		<--クラスターメンバー(重みなし)
    }
Nginxをロードバランサーとして機能するよう「/etc/nginx/nginx.conf」に追加
server {	<--server {...}に以下内容を追加
        location /foo {			<--ロードバランシングされる対象URL(各サーバーに「/foo」を用意しておく)
            proxy_set_header X-Real-IP $remote_addr;	<--ヘッダー情報の書き換え(必要に応じて)
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header Host $host;
            proxy_pass http://mycluster;		<--「mycluster」を指定
        }
    }
...
Nginxをロードバランサーとして機能するよう「/etc/nginx/conf.d/default.conf」に追加

 上の設定例では、リクエストが分散される割合を変えています。192.168.0.2に対し「weight」(重み)を指定し、4リクエストのうち、3リクエストが192.168.0.2に、1リクエストだけが192.168.0.3に割り振られるようにしています。サーバーの処理能力に応じて、weightを設定します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。