




では、今日も授業を始める。今日のテーマはリバプロ(リバースプロキシ)だ。

リバプロって何!?

前回、プロキシ(Proxy)について学習したね。まずはプロキシの復習をしてみよう。
プロキシは、「代理」の意味があって、
インターネットをみるときに、パソコンが企業内に設置されているプロキシサーバに接続して、
プロキシサーバがインターネットへ接続する。

うん、知ってるよ~。

クライアントからプロキシサーバに接続されたときに、プロキシサーバがユーザ認証するように実装することもできる。
つまり、認証されたクライアントだけがインターネットへアクセスできるようになる。
ユーザ認証とは、IDとパスワードがあっていたら、認証OKとする機能だ。
つまり、IDとパスワードを知らないと、インターネットへ接続できない。

さあ、次は本日のテーマのリバプロだ。リバースプロキシは、プロキシをリバースするのだから、逆プロキシ
ということになる。

えっ、プロキシの逆ってどういうこと!?

リバースプロキシは、インターネットから不特定多数のクライアントのリクエスト(要求)に対して、
代理で受付を行い、その後で、後ろにいるサーバへ通信を振る役割を持っている。
つまり、インターネットからの通信の入り口に、リバプロを設置する。

リバプロを使うと何かいいことあるの?

リバースプロキシを設置して、その後ろに複数のサーバを用意すると、リバプロで負荷分散(ロードバランシング)ができる。
つまり、クライアントから大量のアクセスをさばくために、リバプロの後ろに、サーバをいくつか並べるという方法だ。
また、リバプロでキャッシュ機能を持たせることで、毎回サーバへアクセスしなくても、リバプロが応答を返すこともできる。

リバースプロキシの後ろに、いくつかの種類のサーバを用意して、
/app1/の場合は、リバプロはサーバAへ通信し、/app2/の場合は、リバプロはサーバBへ通信するといったように、
URLに含まれるパスによって、通信先を変えたりもできる。

リバプロの配下に、いろんなサーバを置いてるのか~。

また、セキュリティの向上という目的もある。リバプロはDMZ(DeMilitarized Zone)に設置されるため、
インターネットから直接Webサーバに対して攻撃されることはない。
リバプロでファイアウォールなどのセキュリティ対策をすれば、Webサーバの安全性を高めることができる。

えっ、DMZって何?

DMZ(ディーエムゼット)はDeMilitarized Zone(ディミリタライズド ゾーン)の略で、非武装地帯(ひぶそうちたい)といわれる。
インターネットなどの信頼できない外部ネットワークと、
社内ネットワークなどの信頼できるネットワークの中間に位置するネットワーク部分のことをDMZという。

ファイアウォールを使って、インターネット→DMZへはアクセス可能、
社内ネットワーク→DMZへもアクセス可能、DMZ→インターネットへもアクセス許可にするが、
DMZ→社内ネットワークの通信はアクセス制限を行う。
あと、社内ネットワーク→インターネットへの通信は、DMZにProxyサーバを置いて、
Proxyサーバ経由でインターネットへアクセスさせるようにすることがほとんどだ。

DMZはインターネットからも、内部からもアクセスされる場所ってことね。

あと、HTTPSの暗号通信(例:https://yahoo.co.jp/)の場合、
リバプロに証明書を保存して、クライアントとリバプロの間で、SSL(TLS)で暗号化できるようにすることもある。
クライアント→リバプロの間は暗号通信を行い、リバプロ→Webサーバの間は非暗号通信させることで、
Webサーバすべてに証明書を保存する必要がなくなる。つまり、リバプロで暗号を復合化(暗号をほどく)する。
こうすることで、WebサーバをすべてHTTPSに対応させなくてもよくなる。

プロキシとか、リバプロって、機能多すぎ。

リバプロって、Linuxサーバ上にインストールすればいいの?

その通り。「Apache」をインストールしてリバプロ用の設定を行えば、リバプロとして使える。
ApacheはWebサーバのソフトウェアだから、リバプロとして使わずに、Webサーバとして利用することの方が多い。

nginx(エンジンエックス)もリバプロとして設定すれば、リバプロとして動作する。
nginxも、Apacheと同様に、Webサーバのソフトウェアだから、リバプロとして使わずに、本来はWebサーバとして利用することの方が多い。

Apacheと、nginxね。あと、プロキシを利用するときにインストールしたsquidは、リバプロとして利用できないの?

squid(スクイド)もリバプロ用の設定を行えば、リバプロとして利用できる。

あと、オープンソースのVarnish cache(バーニッシュ キャッシュ)もリバプロとして利用されている。

Apache Traffic Server(ATS)もリバプロとして利用される。
Apache Traffic Serverは、米Yahoo!で開発され、Yahoo!のサービスで使われていた。
今はApache Software Foundation(ASF)に開発が移管され、ASFで開発が進められている。

あと、IISのApplication Request Routing(ARR)という拡張機能を使うことでリバプロとして利用できる。
このApplication Request Routingは、IISバージョン7から登場したマイクロソフト社のモジュールだ。
IIS(アイアイエス)は、Windowsサーバ上で利用するWebサーバソフトウェアのことだ。

あと、アプライアンス製品として、F5社のBIG-IPを利用することもできる。

多すぎるー。

アプライアンスって、特定機能に特化した専用製品だったよね?

うむ。その通り。今日はここまでにしよう。

は~い。
1.リバプロ(リバースプロキシ)は逆プロキシ
2.リバプロは、インターネットからの接続を受け付けて、内部のWebサーバへ通信を振る。
つまり、リバプロには中継機能という役割がある。リバプロでセキュリティ対策を行うことも可能
3.リバプロの目的は、負荷分散、キャッシュ機能、通信先の振り分け機能、セキュリティ向上、SSL通信の複合化など
4.リバプロには、Apache、nginx、squid、Varnish cache、Apache Traffic Server(ATS)、IISのApplication Request Routing(ARR)、F5のBIG-IPなど
5.リバプロのApache Traffic Server(ATS)は米Yahoo!で開発され、Yahoo!で使われていた