1サーバーに格納していたコンテンツを分離する方法

もともと1サーバーにコンテンツを丸ごと格納していたものを別々のサーバーに分離するようなことがあった(CGIプログラムなどは暴走するとコンテンツがすべて見れなくなるので、それを別サーバーに分離して影響度を減らすようにした)ので、そのための方法を考えてみた。
○やりたいこと
HTML,CGI,PHPファイルおよびその他画像ファイルがあり、いままではAサーバーに格納されていた
それをCGI,PHPコンテンツのみをBサーバーで実行させ、残りをAサーバーで実行させる
○実現方法
1.CGI,PHPファイルをBサーバーへ移動させ、CGI,PHPファイルへリンクしているHTMLファイルのパスを変更する。またCGI,PHPからそのたファイルへリンクしているパスを変更する。
→修正範囲が多すぎるのであっさり却下
2.RedirectMatchディレクティブをAサーバーに設定し、CGI,PHPファイルへのリクエストがあった場合Bサーバーへ転送する
→RedirectMatchを使うとGETリクエストは問題ないが、POSTリクエストされた場合、クライアントに対しては、301,302などのステータスコードが返され、クライアントはBサーバーへGETリクエストで再度リクエストする。そのため、POSTデータがBサーバーに対しては転送されないので、正しくコンテンツを遷移できなくなるのでやはりあきらめた。
3.リバースプロキシの仕組みを利用し、CGI,PHPファイルへのリクエストがあった場合、AサーバーはBサーバーへまったく同じ問い合わせを行って、その結果をクライアントへ返す
→これであればまったく問題ないことが分かった。
リバースプロキシ(通常のプロキシサーバーはフォワードプロキシといわれている)の仕組みはApacheを使って安価にロードバランサーを実現する際にも使われるので、設定を熟知できるようにしておきたい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です