では、今日も授業を始める。今日のテーマはリバプロ(リバースプロキシ)だ。
リバプロって何!?
前回、プロキシ(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!で使われていた