web-dev-qa-db-fra.com

Comment pointer 2 domaines différents à 1 adresse IP (Apache)?

J'ai deux noms de domaine différents, que je veux héberger sur le même hébergement privé que j'ai. Je veux qu'ils pointent sur la même adresse IP et que vous avez encore un contenu différent (bien sûr). Comment puis je faire ça? Existe-t-il différentes façons de faire cela? Dans ce cas quel est le meilleur moyen. Merci.

11
Nima

Vous voudrez probablement utiliser l'hébergement virtuel de Apache. C'est une méthode bien prise en charge d'accueillir de nombreux domaines sur une seule adresse IP.

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

Plus précisément, les hôtes virtuels basés sur le nom: http://httpd.apache.org/docs/2.2/vhosts/name-based.html

7
BenC

Apache2 prend en charge desservant différents contenus en fonction des noms de domaine, même si tous les domaines résolvent à la même adresse IP. Chacun des noms de domaine est géré par un hôte virtuel , donc le nom hôte virtuel basé sur le nom .

Voici une configuration d'échantillon pour deux domaines:

NameVirtualHost *:80

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

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

Vous trouverez la documentation officielle sur support d'hôte virtuel basé sur le nom ici .

Toutefois, veuillez noter que cela ne fonctionnera que avec des connexions HTTP simples, non pas avec HTTPS (HTTP Over SSL): les hôtes virtuels basés sur des noms s'appuient sur le nom de votre nom à la demande, mais cette information ne peut pas être connue par Apache avant le SSL crypté. la connexion est établie.

Si vous avez besoin de votre configuration de travailler avec HTTPS aussi, vous devez vous appuyer sur une extension du protocole SSL appelé Indication du nom du serveur (SNI) (- rfc4366 ). Fondamentalement, les clients compatibles SNI (EX: Navigateurs Web) Ajoutez une information de texte extra-ordinaire lors de l'établissement de la connexion SSL cryptée, permettant au serveur de connaître le nom à la demande avant que la connexion SSL soit prête.

Tous les navigateurs ne supportent pas encore Sni. Au moment de l'écriture et selon Wikipedia, ceux-ci font:

  • Internet Explorer 7 ou ultérieure, sous Windows Vista ou supérieur (ne fonctionne pas sur XP, même IE 8)
  • Mozilla Firefox 2.0 ou plus tard
  • Opera 8.0 ou version ultérieure (le protocole TLS 1.1 doit être activé)
  • Opera Mobile au moins la version 10.1 bêta sur Android
  • Google Chrome (Vista ou supérieur, XP ON Chrome 6 ou plus récent, OS X 10.5.7 ou supérieur sur =. Chrome 5.0.342.1 ou plus récent)
  • Safari 2.1 ou version ultérieure (Mac OS X 10.5.6 ou supérieur et Windows Vista ou supérieur)
  • Konqueror/KDE 4.7 ou plus tard
  • Mobilesafari in Apple iOS 4.0 ou plus tard
  • Navigateur par défaut Android sur Honeycomb (v3.x) ou plus récent
  • Windows Phone 7
  • Microb sur maemo

Hébergement de plusieurs hôtes virtuels basés sur le nom accessibles HTTPS HTTPS nécessite d'activer MOD_SSL et d'ajouter une configuration similaire comme dans l'exemple ci-dessus:

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>

N'oubliez pas que l'utilisation de SSL nécessite que vous achetiez des certificats SSL pour vos domaines - ou de générer des celles signées automatiquement et de configurer Apache pour les utiliser pour les connexions SSL.

14
p_piotr3k