it-swarm-ja.com

1つのAmazonEC2フォルダーを別のインスタンスにポイントします

これが適切な場所かどうかはわかりません。しかし、AWSのAmazonEC2インスタンスで実行されているWebアプリがあります。 www.myapp.com/blogに配置されるWordPressブログを立ち上げたいと思います。

それらを同じAmazonEC2インスタンスに配置したくないので、別のインスタンスを作成してWordPress環境をセットアップしました。実行中です。

ここで行う必要があるのは、このフォルダー/blogがこのインスタンスを指すようにすることです。 Amazon Route 53を使用してそれを行う必要があると思いますか?私もそうしようとしましたが、フォルダblog.myapp.comではなく/blogにCNAMEを作成できたようです。そして、私たちは本当にそれがwww.myapp.com/blogにあることを望んでいます。 .htaccessのようなものを使用する必要がありますか?

2
grpaiva

ここで行う必要があるのは、このフォルダー/blogがこのインスタンスを指すようにすることです。 Amazon Route 53を使用してそれを行う必要があると思いますか?私もそうしようとしましたが、フォルダblog.myapp.comではなく/blogにCNAMEを作成できたようです。そして、私たちは本当にそれがwww.myapp.com/blogにあることを望んでいます。 .htaccessのようなものを使用する必要がありますか?

短い答え。

要するに、あなたが説明していること、つまりあなたが説明していることは機能しません。 blog/はメインのwww.myapp.comAmazon EC2インスタンス上のディレクトリ/フォルダー/パスですが、サーバーとWebURLパスの概念を混同しています。別名:ディレクトリ、フォルダ、パス。

新しいAmazonEC2インスタンスを起動する場合は、まったく新しいサーバーをセットアップすることになります。また、ベースホスト名が同じwww.myapp.comであるが1つだけが/blogの有効なパスを持つ2つのサーバーは発生しません。

このサイトをサーバー間で分割する場合の最善の策は、サブドメインがblog.myapp.comの新しいAmazon EC2インスタンスをセットアップし、すべてのトラフィックをwww.myapp.com/blogの最初のインスタンスからその新しいサブドメイン/ホストにリダイレクトすることです。

詳細は以下をご覧ください。

より長い答え。

したがって、2つのAmazonEC2インスタンスがあります。

  • EC2インスタンス1:www.myapp.comをホストしています。
  • EC2インスタンス2:www.myapp.com/blogをホストします。

まず、これはAmazonのDNSサービスであるAmazon Route 53とは100%関係ありません。 Amazon Route 53が行うのは、ホスト名や宛先IPアドレスなどのDNSエントリを管理することだけです。これを理解する簡単な方法は、URLの最初のパス(/)の左側にあるものがホスト名であることです。だからあなたの例では:

www.myapp.com/blog

問題のホスト名はwww.myapp.comです。

したがって、CNAMEを介してwww.myapp.com/blogEC2インスタンス1からEC2インスタンス2に「リダイレクト」しようとすることは決してありません。技術的には不可能です。その理由は次のとおりです。

  • まず、URLの/の右側にあるパスデータにDNSエントリを設定することはできませんでした。
  • 次に、基本的に、EC2インスタンス1EC2インスタンス2の正確なホスト名をwww.myapp.comと同じにし、のみ- EC2インスタンス2にはblog/がありますが、これはあなたの質問が示唆する方法では技術的に不可能です。

より現実的な解決策は、Amazon Route 53を介して新しいサブドメインをセットアップすることです。これにより、新しいAmazonEC2インスタンスのセットアップは次のようになります。

  • EC2インスタンス1:www.myapp.comをホストしています。
  • EC2インスタンス2:ホストblog.myapp.com

そのような場合は、Apache書き換えルールを設定して、www.myapp.com/blogに対して行われたすべてのトラフィック要求をblog.myapp.comに強制的に送信することができます。次のような.htaccessコマンドを使用すると、非常に実行可能で簡単に実行できます。

RewriteEngine On
RewriteRule     ^blog(/.*)?$    http://www.newdomain.com/ [R=301]

これを.htaccessのルートにあるwww.myapp.comファイルに配置するだけで、すべてのトラフィックがEC2インスタンス1blog/からblog.myapp.comにリダイレクトされます。

もう1つ:Apacheリバースプロキシを使用することの長所/短所。

したがって、上記のすべて コメンターは持ち出します セットアップとApacheリバースプロキシを使用して、www.myapp.com/blog on EC2 Instance 1 to blog.myapp.comon- EC2インスタンス2。はい、これは技術的に元の質問で概説されている目標を達成しますが、ワームの潜在的な可能性を開きます。

  • Apacheリバースプロキシの設定の複雑さ:リバースプロキシの概念がそれほど複雑であると言っているわけではありません。平均的なユーザーはその使用方法を学ぶことができません。 。一度コツをつかめば、実際には少し簡単に理解できます。ただし、複雑さは、Apache構成を調整し、セットアップの存続期間にわたってそれらの構成を管理する必要があることに起因します。たとえば、一部のWeb開発ショップでは、これはDevOpsタスクと見なされます。また、一部の開発者は、このような一般的でないDevOpsタスクを処理したくない場合があります。
  • リバースプロキシは両方のサーバーがトラフィックを取得することを意味します:リバースプロキシは基本的に、あるサーバーから別のサーバーにトラフィックをルーティングする「パイプ」であるため、トラフィックは- EC2インスタンス2は引き続き通過する必要がありますEC2インスタンス1。個別のAmazonEC2インスタンスを設定する目的が、一方のサーバーが他方に影響を与えないようにすることである場合、リバースプロキシが問題になる可能性があります。実際のユーザーや攻撃からの大量のトラフィックがwww.myapp.com/blogに移動するとしますが、どうなりますか? EC2インスタンス1のメインサーバーは、そのトラフィックとEC2インスタンス2を取得します。したがって、両方のサーバーが潜在的に脆弱です。対照的に、トラフィックをサブドメインにバウンスする単純なRewriteRuleは、負荷に関して軽量/無視できます。ほとんどのユーザーはとにかくblog.myapp.comのサブドメインでブログにアクセスするため、両方のサーバーはそれぞれが取得するトラフィックから分離/分離されます。
  • 両方のサーバーがメインサーバーにアクセスできなくなります:非常に簡単に理解できます。 EC2インスタンス1www.myapp.com/blogのトラフィックとwww.myapp.comのコアコンテンツを管理している場合、そのサーバーがダウンすると、両方のサイトにアクセスできなくなります。 blog.myapp.comのようなサブドメインを持つことは、www.myapp.comのメインサーバーがダウンした場合でも、blog.myapp.comにアクセスできることを意味します。

そうは言っても、Apacheリバースプロキシセットアップを使用して調査したい場合は、サーバー障害について2つの回答があります- これこれ -基本的な構成とセットアップについて説明しています。

これらの投稿は、ポート8080を使用するSolrおよびその他のJava/Tomcatアプリと、Tomcatは私の謙虚な意見では構成/管理するのが面倒なので、Apacheリバースプロキシを使用して私の生活を楽にする方法に焦点を当てていることに注意してください。 Apacheリバースプロキシを使用すると、Tomcatの癖に対処する代わりに、比較的理解しやすいApache構成を使用して、サイトの前面のWebアクセスを管理できます。ただし、全体的な概念は、ApacheからApacheへのリバースプロキシセットアップでの使用から簡単に適合させることができます。

3
JakeGould