リバースプロキシと聞くと、何か難しいイメージが浮かびませんか。そんなリバースプロキシのしくみと目的や用途を、誰にでもわかりやすく解説しています。これらを理解したあとに、サーバーへの実装方法のポイントを簡単にまとめています。運用中のWebサイトを、快適で安全に公開するためにぜひお役立てください。 目次 リバースプロキシとは?一般的にはリバース(reverse)は逆や反対、プロキシ(proxy)は代理や代理人の意味があります。もともとは直接つながっているところに、あらたに置かれる「仲介」がプロキシのイメージです。その設置を、逆の発想で活用したのがリバースプロキシの技術です。 インターネット上で行き交うデータの量と質は、常に一定ではありません。例えば、突然爆発的にWebサイトへのアクセスが増加することがあります。とても大事なデータがあり、大元のWebサーバーを守るために厳重に管理したいときもあるでしょう。 仲介する場所が利用者側の場合をプロキシとすれば、利用者とはまさに反対側に位置するサーバー寄りの場合をリバースプロキシと考えることができます。それでは、より具体的に解説していきましょう。 リバースプロキシとプロキシとの違い
【ポイント】 リバースプロキシの基本的な仕組みインターネットとWebサーバーの間に設置インターネットからは、あたかもWebサーバーに直接アクセスしているかようになります。 Webサーバーを複数設置可能複数あるWebサーバーをリバースプロキシが振り分けるため、各Webサーバーの負担が軽くなり、安定したサービスを継続して提供できます。 防御壁(ファイアウォール)として機能するファイアウォールとして、セキュリティを向上することが可能です。Webサーバーの改ざんや不正侵入などのリスクを減らします。 リバースプロキシを使うメリット
より高度なセキュリティ対策そもそも、Webサーバーはインターネット上で公開を目的として設置されているため、悪意をもって狙われることが少なくありません。そこで守るための対策を、単独ではなく複数の手法を併用して、セキュリティのリスクを軽くします。仲介する意義はここにあります。 アクセス集中時でも、負荷分散により稼働が安定ApacheやNginxなどのWebサーバーを適切に設定することにより、複数のWebサーバーへの負荷を分散させることができるようになります。Webサーバーだけでは、アクセス集中によって機能が停止する場合でも、安定したサービスを提供できます。基本的な設定はそれほど難しくありません。のちほど方法をご説明します。 負荷分散については、以下の記事でも解説しています。あわせて参考にしてみてはいかがでしょうか。 表示速度の高速化キャッシュ(一時的にデータを保存する仕組み)により実現しています。この機能により、ブラウザ上に高画質の画像が大量にあるページを表示する場合でも、比較的高速に処理することができます。これで、限られた時間でも効率的にWebサイトを利用できますね。またGoogleなどの検索エンジンの評価も向上が期待できます。 初めてページにアクセスする場合のみ、キャッシュが無いため表示速度は比較的遅れます。2回目以降のアクセスで改善が期待できます。 CDN(Content Delivery Network)というサービスも、リバースプロキシの仕組みを活用しています。「CloudFlare」が有名ですね。 リバースプロキシの用途
利用に向いている代表的なケースを3つご紹介します。 (1)Webサイトの改ざん防止例えば公共性の高いWebサイトなど、大切な情報を継続して提供する場合に利用できます。 (2)アクセス数が多いWebサイトでのリスク分散動画サイトやニュースサイトなどのように、アクセス数の多い場合が当てはまります。各種イベントなど突発的にアクセス数が激増する場合も考えられます。 (3)巨大な動画サイトなどの表示速度向上大容量のデータを大量に提供している動画サイトやニュースサイトなどにとって、リバースプロキシの利用は特に重要と考えます。限られたインターネット回線の環境では、やはり効率的なデータ転送が必須だからです。 また最近のリモートワーク人口の急増にともない、オンラインでの打ち合わせが増え、インターネット回線の混雑度合が増しています。その結果生じるスピード低下を解消する手段として、リバースプロキシは注目されているのではないでしょうか。 リバースプロキシの実装
「Apache」と「Nginx」での実装方法 *Ubuntu 18.04 (64bit)の場合「Apache」の場合1:以下のコマンドでApacheをインストールします。【コマンド】 2:必要に応じて、基本設定をします。【コマンド】 vi /etc/apache2/conf-enabled/security.conf 3:mod_proxy モジュールを有効化します。【コマンド】 4:再起動します。【コマンド】 systemctl restart apache2 5:リバースプロキシを設定します。【コマンド】 systemctl ProxyRequests Off Require all granted ProxyPass / (転送先URLまたはIPアドレス) ProxyPassReverse / (転送先URLまたはIPアドレス) 上記を応用すれば、リバースプロキシで負荷分散する設定も可能です。 6:再起動します。【コマンド】 systemctl restart apache2 Apacheについてより詳しい内容は、以下のページにて解説しています。 【関連記事】 「Nginx」の場合1:以下のコマンドで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:再起動します。【コマンド】 「squid」ソフトウェアの場合 (Webサーバーを使用しない場合)1:以下のコマンドでSquidをインストールします。【コマンド】 2:リバースプロキシを設定します。【コマンド】 【コマンド】 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を再起動します。【コマンド】 Windows Serverで使う場合Windows用のWebサーバーIISの専用モジュールを導入してから、必要な設定を行います。こちらのモジュール名は、「Application Request Routing(ARR)」と呼ばれ無償で利用できます。以下の公式サイトよりダウンロード可能です。 Microsoft Application Request Routing 3.0 (x64) まとめここまでいかがでしたか。リバースプロキシは難しいようですが、目的と機能は比較的わかりやすいと考えています。ぜひ実装し、大切なWebサイトを大切に守っていただきたいと思います。 カゴヤ・ジャパンが提供している以下のプランでは、リバースプロキシとしてNginxを採用しています。 安定したWebサイトの運営におすすめです。 |