「プロキシ設定って何のためにするの?」
「WEBアプリ開発用フレームワークを導入する時に毎回設定しているけど、目的をよく知らない」
社内でネットワークサーバーアプリを作る際にプロキシ設定(proxy設定)をする必要があります。システム管理者から言われた通りに設定すれば、簡単にプロキシ設定は行えるので、その目的をよく知らないという人は多いかもしれません。
この記事では、そもそもプロキシの目的とは何か?やどう活用しているのか?ついて説明します。
プロキシ(proxy)とは?
proxyとは、「代理」「中継」という意味をもつ言葉です。
プロキシとは、インターネットの接続をパソコンやスマホの代わりに行っている中継役のサーバーのことをいいます。
プロキシの仕組み
プロキシはインターネットにアクセスして情報を貰うパソコンなど(スマホ)の代わりにインターネット接続を行うサーバーの役割があります。
一般的にインターネットへの接続は、PC やモバイルなどの端末のブラウザを経由して、直接 Web サイトにアクセスします。
プロキシを使用すると、私達が使う端末はまずプロキシにアクセスを行い、プロキシが代わりに目的のサイト(WEBサーバ)にアクセスしてリクエストを行います。その後、WEBサーバからのデータもプロキシが一度受け取った後に、端末のブラウザに表示させます。
プロキシが間に入って中継するため、端末が直接外部と接触せず、セキュリティを強化したり、データの解析や処理ができるといったメリットがあります。(これらは私達が使う端末機能ではなく、プロキシ側の機能によって決まります)
プロキシの種類
プロキシにはいくつか種類があります。
フォワードプロキシ
一般的に、プロキシやプロキシサーバーと呼ばれているのがこの「フォワードプロキシ」のことを指していることが多いです。フォワードプロキシは、ユーザー端末(クライアント)側に設置され、ユーザー側の要求を中継してインターネットに接続します。
個人で手取り早くセキュリティを高める際は、有効な手段となります。
リバースプロキシ
フォワードプロキシの逆でWebサーバー側に位置します。主にWebサーバーの負荷軽減を行うために用いられます。
WEBサーバ側にプロキシがあるメリットについてもう少し説明します。
WEBアプリなどは、特定のURLに応じてWEBサーバにリクエストを送る必要があります。WEBサーバ側にプロキシがあると、WEBサーバーが複数あっても自動的に切り替えて分散管理が出来る様になります。
これによって、WEBアプリの中で複雑な処理を担うWEBサーバとデータを共有するサーバーを分けることが出来、複数のサーバーを機能させることが出来るのです。
その他に、リバースプロキシの背後に同じ処理を行う複数のサーバーがあれば、一度に大量のアクセスが集中した場合でも、各サーバーにアクセスを振り分けて負荷分散を実現できるようになります。
リバースプロキシがなぜサーバー負荷を下げるのか?
上記の通り、リバースプロキシは、WEBサーバ側にとって効率的に機能することが出来る様になります。
さらに大きな効果として、キャッシュ機能があります。
リバースプロキシを介して送信された画像や文字といった変わらないデータ(静的コンテンツ)は、一定期間、キャッシュとしての保存が可能となります。異なるユーザーが同じ静的コンテンツを要求した場合、一時保存されたキャッシュが送信され、高速に表示されます(データの使い回し可能)。これによって、キャッシュを利用する間はサーバーからリバースプロキシへの静的コンテンツのデータ送信が発生しないので、サーバーへの負荷が軽減されることになるのです。
プロキシのセキュリティ対策はなぜ必要なのか?
プロキシ及びリバースプロキシは、DMZと呼ばれる非武装ネットワーク上に設置されるのが一般的です。
このDMZの領域は外部と接続するサーバーが配置されており、ファイアウォールで保護されている領域の外側になります。
そのため、プロキシのセキュリティ対策が必要とされているのは、プロキシは外部から直接アクセスできる様になっているため、サイバー攻撃の対象となり危険性が高いこと為と知っておきましょう。