web-dev-qa-db-fra.com

Comment créer des sous-domaines sur un hôte virtuel nominatif?

J'ai un hébergement basé sur un nom, appelons-le my.address.com. Mon ami a l'adresse "simple" address.com et m'a donné une machine virtuelle à laquelle je peux accéder via SSH.

Il a également fait de la magie avec les ports et maintenant, après avoir installé Apache, je pouvais accéder à /var/www à my.address.com.

La question est donc de savoir comment créer un sous-domaine tel que test.my.address.com?

Il devrait y avoir un peu de magie avec la directive d'écoute d'Apache , mais je ne peux pas le comprendre. De plus, je sais comment créer des sites disponibles localement avec Apache, mais ce n'est pas la même chose.

27
scythargon

Pour pouvoir créer des sous-domaines, vous devez vous assurer de plusieurs choses:

DNS

Donc, les autres peuvent atteindre test.my.address.com, ils doivent d'abord pouvoir résoudre ce nom en adresse IP de votre machine virtuelle. Comment cela peut-il être fait?

Ce que votre ami a probablement déjà fait est de créer un enregistrement dans la zone address.com, qui pointe my sur l'adresse IP de votre machine virtuelle.

Jusqu'ici tout va bien. Mais qu'en est-il de test.my? Il se peut qu'il n'y ait pas encore d'entrée.

Votre ami pourrait simplement ajouter *.my à la zone également (et la diriger vers la même adresse IP). Ensuite, toutes les demandes adressées à something.my.address.com seront envoyées à votre machine virtuelle. Génial!

Apache Virtual Hosts

Une fois votre VM joignable, Apache doit savoir comment traiter la demande. C'est ici que nous utilisons la fonctionnalité Hôtes virtuels du serveur HTTP Apache.

Je travaille habituellement sur Debian, je vais donc expliquer cela avec un exemple de configuration dans /etc/Apache2/sites-available. Ayons un fichier appelé test.my.address.com et remplissons-le avec des informations.

<VirtualHost *:80>
        ServerName test.my.address.com
        ServerAdmin [email protected]

        DocumentRoot /var/www/test.my.address.com/
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/test.my.address.com/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${Apache_LOG_DIR}/test.my.address.com.error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${Apache_LOG_DIR}/test.my.address.com.access.log combined
</VirtualHost>

Le paramètre clé à l'intérieur de ce fichier est la directive ServerName . Cela indique à Apache sous quel nom ce serveur doit être disponible. Des noms supplémentaires peuvent être donnés avec la directive ServerAlias ​​ .

Si vous utilisez également Debian, n'oubliez pas de Sudo a2ensite test.my.address.com après avoir créé le fichier et de Sudo invoke-rc.d Apache2 restart.

32
Der Hochstapler