• ベストアンサー

同じドメインで別のIPへのリダイレクト

お世話になります。 旧サーバ  ドメイン:http://hogehoge.co.jp IP:xxx.xxx.xxx.1 新サーバ  ドメイン:http://hogehoge.co.jp IP:xxx.xxx.xxx.2 上記のようなサーバがあったとして、ドメインはそのままでDNSを別のサーバに向けた時、 DNSが浸透するまでに多少の時間がかかると思います。 その際、旧サーバにアクセスがあった場合に新サーバへリダイレクトを する方法はありますでしょうか。 mod_rewriteでできるものなのでしょうか? どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.4

> 新旧サーバにデータが混ざってしまうのですが、これを回避するにはどのようにした方が ホスト名が変更できないのであれば、DNSのTTLを極力短くした上で、新サーバの稼働(=新しいIPでのDNSの稼働)と同時に古いサーバは停止した方がよいでしょうね。もっとも、全くアクセスできないと問題になるので、DNSのキャッシュが混在していると推測される時間帯はメンテナンスなどの理由でサービスを休止していることにした方がよいとは思います。 新しいサーバに新旧両方のIPアドレスを割り当てられるのであれば、TTLは短くしなくても大きな問題はないと思います。 いずれにしろ、新旧両方のサーバへのアクセスが混在して問題が生じるのであれば、サーバの並行運用はしない方がよいと思います。 # ホスト名が変更できるのであればもうちょっと楽なんですけどね。

yagisuke
質問者

お礼

>DNSのキャッシュが混在していると推測される時間帯はメンテナンスなどの理由でサービスを休止していることにした方がよいとは思います。 確かに休止しておくのが問題がおきなくて一番良い方法ですね。 DNSのTTLを極力短くし、サービス一時休止という方法でいきたいと思います。 どうもありがとうございました。

その他の回答 (3)

回答No.3

>ブラウザで「http://hogehoge.co.jp」でアクセスして、それが旧サーバに流れた場合、 >リダイレクトされて「http://xxx.xxx.xxx.2」というようになるのでしょうか。 そうです。閲覧者のブラウザのアドレス欄には「http://xxx.xxx.xxx.2/hoo_bar.html」が表示される事になります。 >もしその場合、URLそのままでリダイレクトする方法はないでしょうか。 ありません。元のURL「http://hogehoge.co.jp」や「http://hogehoge.co.jp/hoo_bar.html」は、古いDNS情報を元に「http://xxx.xxx.xxx.1」や「http://xxx.xxx.xxx.1/hoo_bar.html」と解釈され、古いサーバーを見に行ってしまいます。 >旧サーバの方にいってしまうと新旧サーバにデータが混ざってしまうのですが、これを回避するにはどのようにした方がよろしいでしょうか? そういう事が起きるのは「URIに、自分自身を示すアドレスなのに、フルドメイン名を含んだ記述をしている場合」か「一旦、外部のサイトに出てから戻って来るようなリンクページがある時」ですよね? リソースの原始コードに「自分自身を示すアドレスなのに、フルドメイン名を含んだ記述」がある場合は、それを排除すれば済みます。 「一旦、外部のサイトに出てから戻って来るようなリンクページ」の場合は、外部のサイトに出た時点でセッションが切れる筈」なので「DBアクセスには何の問題も起こさない筈」です。 「セッションが切れているのにDBにアクセスを続けてしまう時」と言うのは、例えば、何らかのDB更新を終わらせた後、ブラウザの「戻る」や「履歴」を使ってページを巻き戻し「既にアクセスし終わって無効になったページを再表示しようしている時」な筈です。 もし、そういう状況で「無効ページを元に、DBを間違ったデータで再更新してしまう」としたら「DBアクセスの基本的な設計ミス」なので、根本的な部分からの改修が必要でしょう。 そういう訳で「正しく記述し、正しく設計している限り、新旧のサーバでアクセスが混じってしまう事はない筈」です。 アクセスが混じってしまうとしたら「正しく記述してない」か「設計が破綻している」ので、多分「サーバを引っ越ししてドメインが変わった時に、古いドメインを指している記述が残っていて正しく動作せず、全ソースの見直し」を迫られるでしょう。

yagisuke
質問者

お礼

なるほどですね。 参考になりました。ありがとうございました。

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.2

同一サブネット内でIPを移すのであれば、DNSのキャッシュが消えるまでサーバに新旧両方のIPアドレスを割り当てておけばよいでしょう。 サーバの移設とかプロバイダの切り替えなどでこの手が使えない場合は、DNSのTTLを短くして、DNSのキャッシュが残らないようにあらかじめ設定してから切り替えを行えば、影響を受ける時間は短くてすみます。

yagisuke
質問者

お礼

ありがとうございます。 確かにTTLを短くすれば影響を最小限にできますね。 WebとDBがサーバ内に同居している場合、システムが絡む(例えば、問い合わせフォーム等、DBにデータを登録する)ようなページが あった際に、旧サーバの方にいってしまうと新旧サーバにデータが混ざってしまうのですが、これを回避するにはどのようにした方が よろしいでしょうか? そのようなページは一時的に閉鎖させておくとした方がよいのでしょうか。 どうぞよろしくお願いいたします。

回答No.1

生のWANアドレスを指定してリダイレクトすれば良い。 WANアドレスは「世界中に1つしかない」ので、DNSが浸透しようが浸透してまいが、お構いなしに「目的のサーバーに接続」される事になる。

yagisuke
質問者

お礼

ご回答ありがとうございます。 IPアドレスでリダイレクトさせるということでしょうか。 ブラウザで「http://hogehoge.co.jp」でアクセスして、それが旧サーバに流れた場合、 リダイレクトされて「http://xxx.xxx.xxx.2」というようになるのでしょうか。 もしその場合、URLそのままでリダイレクトする方法はないでしょうか。 どうぞよろしくお願いいたします。

関連するQ&A