web-dev-qa-db-ja.com

2つの異なるドメインを1つのIPアドレス(Apache)にポイントする方法

私は2つの異なるドメイン名を持っていますが、これを同じプライベートホスティングでホストします。私は彼らに同じIPアドレスを指してもらいたいが、それでも(もちろん)内容が異なるようにしたい。どうやってやるの?これを行う別の方法はありますか?その場合、最善の方法は何ですか。ありがとう。

11
Nima

あなたはおそらくApacheの仮想ホスティングを使用したいと思うでしょう。これは、単一のIPアドレスで多くのドメインをホストするための十分にサポートされている方法です。

http://httpd.Apache.org/docs/2.2/vhosts/

具体的には、名前ベースの仮想ホスト: http://httpd.Apache.org/docs/2.2/vhosts/name-based.html

7
BenC

Apache2は、すべてのドメインが同じIPアドレスに解決される場合でも、ドメイン名に応じて異なるコンテンツの提供をサポートします。各ドメイン名は仮想ホストによって処理されるため、名前の名前ベースの仮想ホスト

2つのドメインの構成例を以下に示します。

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName www.yourfirstdomain.tld
  DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>

<VirtualHost *:80>
  ServerName www.yourseconddomain.tld
  DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>

名前ベースの仮想ホストのサポートはこちら に関する公式ドキュメントがあります。

ただし、これはプレーンHTTP接続でのみ機能し、HTTPS(HTTP over SSL)では機能しないことに注意してください。名前ベースの仮想ホストは、要求されている名前の認識に依存していますが、この情報は暗号化されたSSLまではApacheに認識されません。接続が確立されました。

設定をHTTPSでも動作させる必要がある場合は、SSLプロトコルの拡張機能に依存する必要があります(== --- ==)サーバー名表示(SNI)(- RFC4366 )。基本的に、SNI対応のクライアント(例:Webブラウザー)は、暗号化されたSSL接続を確立するときに追加のプレーンテキスト情報を追加し、SSL接続の準備ができる前にサーバーが要求されている名前を認識できるようにします。

すべてのブラウザーはまだSNIをサポートしていません。執筆時およびウィキペディアによれば、これらは次のとおりです。

  • Windows Vista以降のInternet Explorer 7以降(XPでは機能しませんIE 8)
  • Mozilla Firefox 2.0以降
  • Opera 8.0以降(TLS 1.1プロトコルを有効にする必要があります)
  • Opera Mobile(Androidでバージョン10.1ベータ以上)
  • Google Chrome(Vista以降、XP on Chrome 6以降、OS X 10.5.7以降on = Chrome 5.0.342.1以降)
  • Safari 2.1以降(Mac OS X 10.5.6以降およびWindows Vista以降)
  • Konqueror/KDE 4.7以降
  • Apple iOS 4.0以降のMobileSafari
  • Honeycomb(v3.x)以降のAndroidデフォルトブラウザ
  • Windows Phone 7
  • MaemoのMicroB

HTTPSを介してアクセス可能な複数の名前ベースの仮想ホストをホストするには、mod_sslを有効にし、上記の例と同様の構成を追加する必要があります。

Listen 443      
NameVirtualHost *:443

# Accept connections for these vhosts from non-SNI clients
# Clients without SNI will be handled by the first defined vhost.
# If you only want SNI-enabled client, put on instead
SSLStrictSNIVHostCheck off

<VirtualHost *:443>
  ServerName www.yourfirstdomain.tld
  DocumentRoot /www/yourfirstdomain.tld/    
</VirtualHost>

<VirtualHost *:443>
  ServerName www.yourseconddomain.tld
  DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>

SSLを使用するには、ドメイン用のSSL証明書を購入するか、自動署名された証明書を生成し、SSL接続にそれらを使用するようにApacheを設定する必要があることに注意してください。

14
p_piotr3k