人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

アパッチでhttp://*****.com/aaa/ の aaaの部分だけ 別のServerに割り振る事って可能ですか?
可能であればやり方を教えてください。


●質問者: kichitaka
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●100ポイント

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


2 ● パパトモ
●100ポイント

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

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


パパトモさんのコメント
大前提として、.htaccess と httpd.conf ファイルについての知識が必要になります。これらの設定は、.htaccess か httpd.conf ファイル内に記述します。

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

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

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ