連載
NginxをWebサーバー“以外”でも徹底活用する:これから始める人のためのNginx(3)(2/4 ページ)
Nginxは高速化だけではありません。Webサーバー以外への応用事例として、ロードバランサー、HTTPS対応、WAFとしての利用を紹介します。
Nginxをロードバランサーとして活用する
Nginxを開発したIgor Sysoev氏が目標としたのは、高速なWebアクセラレーションです。Webアクセラレーターは本来のWebサーバーの代わりにクライアントからのリクエストを受け付け、サーバーからのレスポンスをキャッシュ、または複数のサーバーに分散させることでレスポンスを高速化します。この際重要になるのが、リバースプロキシ/ロードバランシング機能です。
リバースプロキシ/ロードバランサーの実現
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.