アパッチでhttp://*****.com/aaa/ の aaaの部分だけ 別のServerに割り振る事って可能ですか? 

可能であればやり方を教えてください。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2012/06/29 12:58:56
  • 終了:2012/07/06 13:00:04

回答(2件)

id:a-kuma3 No.1

a-kuma3回答回数4363ベストアンサー獲得回数18002012/06/29 13:10:33

ポイント100pt

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

id:papa-tomo No.2

パパトモ回答回数361ベストアンサー獲得回数1072012/06/29 13:47:46

ポイント100pt

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つのサイトに見せかたり、内部的に負荷分散させる事ができます。

他にも色々とテクニックはありますが、目的に合わせてどの方法を使うか検討されるのが良いと思います。

他1件のコメントを見る
id:kichitaka

ありがとうございます。リバースプロキシが良さそうですね。この場合リバースプロキシServerに対して負荷0とはいかないと思うのですが、どのていど処理できるものでしょうか?
もしご存知でしたら例等頂けると幸いです。

2012/06/29 16:01:54
id:papa-tomo

リバースプロキシの場合、プロキシ側の負荷が問題になることはないと思います。むしろネットワーク等がボトルネックとなって、プロキシ側でプロキシ先のサーバの応答不良によるタイムアウトになる方が多いです。その場合には、プロキシ設定したサーバが、503エラーをブラウザに返すので、503エラーのエラーページのデザインを整えておくのをお勧めします。Apacheは、全てのエラーページをカスタマイズできます。

2012/06/29 17:49:26

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません