リバースプロキシとは?
もともとは直接つながっているところに、新たにおかれる「仲介」がプロキシイメージ。その設置を、逆の発想で活用したのがリバースプロキシの技術。
インターネット上で行き交うデータの量と質は、常に一定ではない。例えば、突然爆発的にwebサイトへのアクセスが増加することがある。とても大事なデータがあり、大元のwebサーバを守るために厳重な管理をしたい時もある。
リバースプロキシ
プロキシ
目的
Webサーバーの動作改善
利用者のインターネットへのアクセス改善
メリット
アクセス数が突然急増しても、サーバーは継続して動作し、利用を妨げない
ブラウザの表示時間が短縮し、利用がはかどる。不要なアクセスの制限。
設置場所のイメージ
Webサーバーとインターネットの間
利用者とインターネットの間
おおまかな動作
複数台の構成にしたWebサーバーへの負荷分散
組織で閲覧済みの大容量のデータなどをキャッシュして、回線の混雑度を減らす
実現方法
専用サーバーの設置
専用サーバーの設置と利用者のブラウザを設定
【ポイント】 リバースプロキシの基本的な仕組み
インターネットとWebサーバーの間に設置
インターネットからは、あたかもWebサーバーに直接アクセスしているかようになります。
Webサーバーを複数設置可能
複数あるWebサーバーをリバースプロキシが振り分けるため、各Webサーバーの負担が軽くなり、安定したサービスを継続して提供できます。
防御壁(ファイアウォール)として機能する
ファイアウォールとして、セキュリティを向上することが可能です。Webサーバーの改ざんや不正侵入などのリスクを減らします。
より高度なセキュリティ対策
そもそも、Webサーバーはインターネット上で公開を目的として設置されているため、悪意をもって狙われることが少なくありません。そこで守るための対策を、単独ではなく複数の手法を併用して、セキュリティのリスクを軽くします。仲介する意義はここにあります。
アクセス集中時でも、負荷分散により稼働が安定
ApacheやNginxなどのWebサーバーを適切に設定することにより、複数のWebサーバーへの負荷を分散させることができるようになります。Webサーバーだけでは、アクセス集中によって機能が停止する場合でも、安定したサービスを提供できます。基本的な設定はそれほど難しくありません。のちほど方法をご説明します。
負荷分散については、以下の記事でも解説しています。あわせて参考にしてみてはいかがでしょうか。
表示速度の高速化
キャッシュ(一時的にデータを保存する仕組み)により実現しています。この機能により、ブラウザ上に高画質の画像が大量にあるページを表示する場合でも、比較的高速に処理することができます。これで、限られた時間でも効率的にWebサイトを利用できますね。またGoogleなどの検索エンジンの評価も向上が期待できます。
初めてページにアクセスする場合のみ、キャッシュが無いため表示速度は比較的遅れます。2回目以降のアクセスで改善が期待できます。
CDN(Content Delivery Network)というサービスも、リバースプロキシの仕組みを活用しています。「CloudFlare」が有名ですね。
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)