web-dev-qa-db-ja.com

単一のサーバーを複数のドメインに関連付けることはできますか?

x.x.x.xウェブサーバーを所有している場合、x.x.x.x/onex.x.x.x/twoに2つの異なるサイトを作成し、それらに2つの異なるドメインを与えることはできますか?

ケースの内部リンクはどのように処理されますか(例:x.x.x.x/one/foo/page.html)?

CentOS 7とLAMPを使用しており、一部のサイトではWordPress

13
Kodeeo

単一のサーバーを複数のドメインに関連付けることはできますか?

はい。これは、DNSを介してWebサーバーでそれらのドメインをポイントすることによって行われます。

「x.x.x.x」Webサーバーを所有している場合、「x.x.x.x/one」と「x.x.x.x/two」に2つの別々のサイトを作成し、それらに2つの異なるドメインを与えることはできますか?

これは、Webサーバーソフトウェアによって異なります。確実に両方のドメインをサーバーに向けることができますが、どのトラフィックがどのドメインを対象としているかを区別するのはサーバーソフトウェア次第です。

一部の小規模なWebサーバープロジェクトは、この種の機能をサポートしていません。ただし、大規模なプロジェクトではしばしばそうなります。 ApacheおよびNginxの場合、このサポートはそれぞれ 名前ベースの仮想ホスト および サーバーブロック を介して行われます。これらのプロジェクトはどちらも、TLS(HTTPS)接続の サーバー名表示 (SNI)もサポートしています。

ケースの内部リンクはどのように処理されますか(例:x.x.x.x/one/foo/page.html)?

通常、oneフォルダへの完全なパスをドキュメントルートとして設定します。仮想ホストまたはサーバーのブロック構成(つまり、「メイン」ドメインの開始場所)。を参照しているページexample.com/foo/page.htmlは、たとえばx.x.x.x/one/foo/page.html。たとえば、単に使用したい場合example.com/page.html、ドキュメントルートをfooの完全パスに設定します。

WordPress

WordPressには、ドメインを処理する独自の方法があります。あなたの例の場合、WordPressが両方のドメインを処理することを望んでいると仮定すると、次のようになります。

  • DNSで2つのドメインを指定します。

  • 2つ作成します。それらのドメインに対応する仮想ホスト(Apache内)。

  • WordPressインストールを指すように各ドキュメントルートを設定します。

  • これらの両方のドメインにサービスを提供するようにWordPressを構成します。

それ以外の場合は、1つのドキュメントルートをWordPress=インストールにポイントし(WordPressで1つのドメインのみを構成))、他のドキュメントルートにWordPress以外のファイルをポイントするだけです。

注意事項

  • 上記の説明では、x.x.x.xでWebサーバーをセットアップしていると想定しています。onefooは、サーバー用にセットアップ済みのデフォルトのドキュメントルートの下にあるディレクトリです。

  • DNSはIPアドレス(例:1.2.3.4)のみ、またはCNAMEレコードの場合はドメイン全体(例:example.com)のみを指すことを言及する価値があります。たとえば、DNSをポイントすることはできません。 http://1.2.3.4/one

  • Webリダイレクトを提供する可能性のある一部のドメインプロバイダーがあります(例:http://1.2.3.4/one)。ただし、これらはDNSの一部ではありません。この状況でページのリクエストがどのように処理されるかは(再び)サーバーに完全に依存します。


最小限のApache仮想ホストの例

例通常のドメイン

<VirtualHost *:80>

ServerName example1.com
# ServerAlias www.example1.com, *.example1.com

DocumentRoot "/path/to/www/Wordpress_Site"

</VirtualHost>


<VirtualHost *:80>

ServerName example2.com
# ServerAlias www.example2.com, *.example2.com

DocumentRoot "/path/to/www/Non-Wordpress_Site"

</VirtualHost>

例サブドメイン

<VirtualHost *:80>

ServerName sub1.example.com
# ServerAlias www.sub1.example.com, *.sub1.example.com

DocumentRoot "/path/to/www/Wordpress_Site"

</VirtualHost>


<VirtualHost *:80>

ServerName sub2.example.com
# ServerAlias www.sub2.example2.com, *.sub2.example.com

DocumentRoot "/path/to/www/Non-Wordpress_Site"

</VirtualHost>
34
Anaksunaman

HTTPS(HTTP + TLS)を使用している場合の注意点:トランザクションの開始時に、特定の操作順序があります。

  1. 着信接続は、サーバーのIPアドレスを使用して行われます。
  2. TLSセッションがネゴシエートされます。
  3. TLSを設定すると、HTTPリクエストがHTTPサーバーに渡されます。

同じIPアドレスを指す複数のDNSホスト名がある場合は、サイトのTLS証明書がサーバーによって提供されるallホスト名をカバーしていることを確認する必要があります。クライアントは、HTTPリクエストが送信されるまで(ステップ3)、サーバーが取得しようとしているホスト名を知らせませんが、クライアントはステップ1の前に目的のホスト名を知っていて、ステップ2でサーバー証明書が送信されることを期待しています。ホスト名が一致しない場合、ブラウザは「このサーバーは偽装されている可能性があります」という警告画面を表示する可能性があります。

ワイルドカード証明書があり、すべてのホスト名がその証明書でカバーされるドメインにある場合、これは非常に簡単です。ホスト名のリスト(別名「サブジェクト代替名」)を証明書プロバイダーに提供して、それらすべてが含まれるようにする必要がある場合、トリッキーになります。

手順3の前に、ホスト名に基づいてさまざまな証明書を提供できるTLS再ネゴシエーションメカニズムがありますが、むらがあり、ほとんどのサーバーはそれを構成しません。 1つの証明書を提供するようにWebサーバーを構成する方がはるかに簡単です。

2
Mike DeSimone

可能ですが、正確な構成はWebサーバーによって異なります。例えば。 Apacheについては こちら を参照してください。

ただし、両方のドメインのDNSがサーバーのIPアドレスを指すようにする必要があります。ただし、リバースアドレス(IPからドメイン名への解決)として設定できるのは、どちらか一方だけです。

2
vlumi