リバースプロキシとは?仕組みをわかりやすく解説

リバースプロキシと聞くと、何か難しいイメージが浮かびませんか。そんなリバースプロキシのしくみと目的や用途を、誰にでもわかりやすく解説しています。これらを理解したあとに、サーバーへの実装方法のポイントを簡単にまとめています。運用中のWebサイトを、快適で安全に公開するためにぜひお役立てください。

リバースプロキシとは?仕組みをわかりやすく解説

リバースプロキシとは?

一般的にはリバース(reverse)は逆や反対、プロキシ(proxy)は代理や代理人の意味があります。もともとは直接つながっているところに、あらたに置かれる「仲介」がプロキシのイメージです。その設置を、逆の発想で活用したのがリバースプロキシの技術です。

インターネット上で行き交うデータの量と質は、常に一定ではありません。例えば、突然爆発的にWebサイトへのアクセスが増加することがあります。とても大事なデータがあり、大元のWebサーバーを守るために厳重に管理したいときもあるでしょう。

仲介する場所が利用者側の場合をプロキシとすれば、利用者とはまさに反対側に位置するサーバー寄りの場合をリバースプロキシと考えることができます。それでは、より具体的に解説していきましょう。
リバースプロキシとは?概要図

リバースプロキシとプロキシとの違い

リバースプロキシ プロキシ
目的 Webサーバーの動作改善 利用者のインターネットへのアクセス改善
メリット アクセス数が突然急増しても、サーバーは継続して動作し、利用を妨げない ブラウザの表示時間が短縮し、利用がはかどる。不要なアクセスの制限。
設置場所のイメージ Webサーバーとインターネットの間 利用者とインターネットの間
おおまかな動作 複数台の構成にしたWebサーバーへの負荷分散 組織で閲覧済みの大容量のデータなどをキャッシュして、回線の混雑度を減らす
実現方法 専用サーバーの設置 専用サーバーの設置と利用者のブラウザを設定

【ポイント】 リバースプロキシの基本的な仕組み

インターネットとWebサーバーの間に設置

インターネットからは、あたかもWebサーバーに直接アクセスしているかようになります。

Webサーバーを複数設置可能

複数あるWebサーバーをリバースプロキシが振り分けるため、各Webサーバーの負担が軽くなり、安定したサービスを継続して提供できます。

防御壁(ファイアウォール)として機能する

ファイアウォールとして、セキュリティを向上することが可能です。Webサーバーの改ざんや不正侵入などのリスクを減らします。

リバースプロキシを使うメリット

リバースプロキシを使うメリット
無くてもWebサーバーは稼働し、各種サービスはインターネット上で提供可能です。それでは、なぜわざわざ仲介する必要があるのでしょうか。この章では3点に絞りまとめています。

より高度なセキュリティ対策

そもそも、Webサーバーはインターネット上で公開を目的として設置されているため、悪意をもって狙われることが少なくありません。そこで守るための対策を、単独ではなく複数の手法を併用して、セキュリティのリスクを軽くします。仲介する意義はここにあります。

アクセス集中時でも、負荷分散により稼働が安定

ApacheやNginxなどのWebサーバーを適切に設定することにより、複数のWebサーバーへの負荷を分散させることができるようになります。Webサーバーだけでは、アクセス集中によって機能が停止する場合でも、安定したサービスを提供できます。基本的な設定はそれほど難しくありません。のちほど方法をご説明します。

負荷分散については、以下の記事でも解説しています。あわせて参考にしてみてはいかがでしょうか。

【関連記事】
【図で理解】ロードバランサーとは?負荷分散の仕組みを解説

表示速度の高速化

キャッシュ(一時的にデータを保存する仕組み)により実現しています。この機能により、ブラウザ上に高画質の画像が大量にあるページを表示する場合でも、比較的高速に処理することができます。これで、限られた時間でも効率的にWebサイトを利用できますね。またGoogleなどの検索エンジンの評価も向上が期待できます。

初めてページにアクセスする場合のみ、キャッシュが無いため表示速度は比較的遅れます。2回目以降のアクセスで改善が期待できます。

CDN(Content Delivery Network)というサービスも、リバースプロキシの仕組みを活用しています。「CloudFlare」が有名ですね。

リバースプロキシの用途

リバースプロキシを使うメリット

利用に向いている代表的なケースを3つご紹介します。

(1)Webサイトの改ざん防止

例えば公共性の高いWebサイトなど、大切な情報を継続して提供する場合に利用できます。

(2)アクセス数が多いWebサイトでのリスク分散

動画サイトやニュースサイトなどのように、アクセス数の多い場合が当てはまります。各種イベントなど突発的にアクセス数が激増する場合も考えられます。

(3)巨大な動画サイトなどの表示速度向上

大容量のデータを大量に提供している動画サイトやニュースサイトなどにとって、リバースプロキシの利用は特に重要と考えます。限られたインターネット回線の環境では、やはり効率的なデータ転送が必須だからです。

また最近のリモートワーク人口の急増にともない、オンラインでの打ち合わせが増え、インターネット回線の混雑度合が増しています。その結果生じるスピード低下を解消する手段として、リバースプロキシは注目されているのではないでしょうか。

リバースプロキシの実装

リバースプロキシの実装
それではリバースプロキシはどのように設定すればいいのでしょうか。この章では設定のポイントをご紹介します。方法には複数あるため、比較的わかりやすいやり方にて、LinuxとWindows Serverに分けて解説していきます。

「Apache」と「Nginx」での実装方法 *Ubuntu 18.04 (64bit)の場合

「Apache」の場合

1:以下のコマンドでApacheをインストールします。

【コマンド】

apt -y install apache2

2:必要に応じて、基本設定をします。

【コマンド】

vi /etc/apache2/conf-enabled/security.conf

3:mod_proxy モジュールを有効化します。

【コマンド】

a2enmod proxy proxy_http

4:再起動します。

【コマンド】

systemctl restart apache2

5:リバースプロキシを設定します。

【コマンド】

systemctl ProxyRequests Off

Require all granted

ProxyPass / (転送先URLまたはIPアドレス)
ProxyPassReverse / (転送先URLまたはIPアドレス)

上記を応用すれば、リバースプロキシで負荷分散する設定も可能です。

6:再起動します。

【コマンド】

systemctl restart apache2

Apacheについてより詳しい内容は、以下のページにて解説しています。

【関連記事】
Apacheとは?Webサーバーの仕組みと人気サーバーソフトを徹底解説

「Nginx」の場合

1:以下のコマンドでNginxをインストールします。

【コマンド】

apt -y install nginx

2:設定ファイルを作成します。

【コマンド】

vi /etc/nginx/sites-available/default

3:リバースプロキシを設定します。

【コマンド】

server {
listen 80 default_server;
listen [::]:80 default_server;
server_name (サーバーのドメイン名);

proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;

location / {
proxy_pass (転送先URLまたはIPアドレス);
}
}

4:再起動します。

【コマンド】

systemctl restart nginx

「squid」ソフトウェアの場合 (Webサーバーを使用しない場合)

1:以下のコマンドでSquidをインストールします。

【コマンド】

apt -y install squid

2:リバースプロキシを設定します。

【コマンド】

vi /etc/squid/squid.conf

【コマンド】

visible_hostname (リバースプロキシのホスト名)
http_access allow all
http_port 80 accel defaultsite=(転送先URLまたはIPアドレス)
cache_peer (転送先URLまたはIPアドレス) parent 80 0 no-query originserver

3:squidを再起動します。

【コマンド】

systemctl restart squid

Windows Serverで使う場合

Windows用のWebサーバーIISの専用モジュールを導入してから、必要な設定を行います。こちらのモジュール名は、「Application Request Routing(ARR)」と呼ばれ無償で利用できます。以下の公式サイトよりダウンロード可能です。

Microsoft Application Request Routing 3.0 (x64)

まとめ

ここまでいかがでしたか。リバースプロキシは難しいようですが、目的と機能は比較的わかりやすいと考えています。ぜひ実装し、大切なWebサイトを大切に守っていただきたいと思います。

カゴヤ・ジャパンが提供している以下のプランでは、リバースプロキシとしてNginxを採用しています。

■共用レンタルサーバー
https://www.kagoya.jp/shared3g/service.html
■マネージド専用サーバー
https://www.kagoya.jp/dedicated/managed/service.html

安定したWebサイトの運営におすすめです。

高速でセキュアな環境で運用できるWordpressユーザー向けに特化したWordPress専用サーバー

人気記事ランキングトップ10

カテゴリ一覧

新着記事Pick Up!