リバプロ(リバースプロキシ)とは



※以下書籍はKindle Unlimitedで読めます。

■LinuxとUNIXの違いをわかりやすく解説しています。
※サーバーエンジニアは知っておくべき内容です。

【初心者向け】これだけでLinuxとUNIXの違いがわかる!


■ロードバランサー(LB)をわかりやすく解説しています。
※ネットワークエンジニア、サーバーエンジニアは知っておくべき内容です。

これだけでSNMPがわかる!SNMPの使い方


■SNMPの使い方をわかりやすく解説しています。
※ネットワークエンジニア、サーバーエンジニアは知っておくべき内容です。

これだけでロードバランサーがわかる!


■ChatGPTの使い方をわかりやすく解説しています。

【初心者向け】これだけでわかる!ChatGPTの使い方




■動画でわかりやすく解説してます。








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




リバプロって何!?




前回、プロキシ(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!で使われていた



 次の章へ