可能であればやり方を教えてください。
Rewrite モジュールでやります。
http://××××.com/aaa/ や http://××××.com/aaa/bbb/ccc.html なんかを全て別のサーバに飛ばすには、こんな感じの定義をします。
RewriteRule ^aaa/(.*)$ http://別サーバ/$1 [R=301,L]
ここに、Rewrite のいろいろな設定の仕方が載っているので、参考まで。
http://web-tan.forum.impressrd.jp/e/2010/01/05/6369
Apacheで、特定のパスを別のサーバで行う方法には、大きく2つあります。
前者はmod_rewriteモジュール、後者はmod_proxyで行います。
混乱しないように、a-kuma3さんの例題を引用させてもらいます。
リダイレクトの書き方
RewriteRule ^aaa/(.*)$ http://別サーバ/$1 [R=301,L]
プロキシの書き方(1)
ProxyPass /aaa/ http://別サーバ/
プロキシの書き方(2)
RewriteRule ^aaa/(.*)$ http://別サーバ/$1 [P,L]
リダイレクトの利点は、利用者に明示的に違うサーバで処理している事を見えるようにしていることです。リダイレクトの場合には、URLで別サーバのドメイン名あるいはIPアドレスが見えます。
リバースプロキシの利点は、利用者に違うサーバで処理している事が見えない事です。この例題の場合は、ずっとhttp://xxxx.com/…というようなURLで処理されます。
リバースプロキシにはもう1つ利点があります。それは、内部的なIPアドレスで動作しているLAN内のサーバの一部をインターネットに公開できる事です。
例えば・・・
RewriteRule ^aaa/(.*)$ http://192.168.1.10/xxx/$1 [P,L]
RewriteRule ^bbb/(.*)$ http://192.168.1.11/yyy/$1 [P,L]
と書くと、xxxx.com/aaa/ でアクセスしてきた時にはLAN内の192.168.1.10にて処理し、xxxx.com/bbb/ でアクセスしてきた時にはLAN内の192.168.1.11にて処理します。これは大きな利点で、例えばWindowsサーバで処理すると簡単に組めるシステムとMacで処理すると簡単に組めるシステムを1つのサイトに見せかたり、内部的に負荷分散させる事ができます。
他にも色々とテクニックはありますが、目的に合わせてどの方法を使うか検討されるのが良いと思います。
ありがとうございます。リバースプロキシが良さそうですね。この場合リバースプロキシServerに対して負荷0とはいかないと思うのですが、どのていど処理できるものでしょうか?
2012/06/29 16:01:54もしご存知でしたら例等頂けると幸いです。
リバースプロキシの場合、プロキシ側の負荷が問題になることはないと思います。むしろネットワーク等がボトルネックとなって、プロキシ側でプロキシ先のサーバの応答不良によるタイムアウトになる方が多いです。その場合には、プロキシ設定したサーバが、503エラーをブラウザに返すので、503エラーのエラーページのデザインを整えておくのをお勧めします。Apacheは、全てのエラーページをカスタマイズできます。
2012/06/29 17:49:26