web-dev-qa-db-fra.com

Virtualhost config: routage et utilisation de joker

Ma configuration VirtualHost est ci-dessous:

<VirtualHost *:80>
          ServerName www.example.com
          ServerAlias example.com
          DocumentRoot /var/www/example/html
</VirtualHost>

Je veux ajouter un sous-domaine en tant que tel: new.example.com

Et je veux ajouter un caractère générique pour attraper tous les autres sous-domaines (*.example.com) et les acheminer vers www.example.com.

Comment dois-je ajouter ce sous-domaine? S'agira-t-il d'un enregistrement A?

Pour le caractère générique, si je change mon ServerAlias en ...

ServerAlias example.com *.example.com

... alors cela va-t-il interférer avec mon sous-domaine (new.example.com)?

EDIT: J'ai plusieurs domaines sur un seul hôte (via des hôtes virtuels). Cela se trouve dans le même dossier que 000-default.conf, mais il s'appelle example.conf. (J'ai effectivement supprimé 000-default.conf] et utilisé des fichiers de configuration nommés d'après les domaines vers lesquels ils pointent.)

3
thanks_in_advance

D'accord. Je vais suggérer un peu de travail qui vous évitera des efforts ultérieurs.

Je dois faire quelques hypothèses dans cette réponse afin d'aider.

Vous aurez trois tâches distinctes: premièrement, éditer vos fichiers de configuration; deuxièmement, définissez votre sous-domaine dans DNS; trois, redémarrez Apache.

Je suggérerai également de créer le site sans www et de créer l’alias du site avec www. C'est juste un peu plus approprié.

Si vous avez httpd.conf, tout va dans un seul fichier, cependant, je vous préviens que la configuration d'Apache a été mise à jour il y a longtemps, à l'exception de quelques installations d'Apache telles que RedHat et un ou deux autres. Chaque Linux a bien sûr son propre paquet. Je vous préviens également que cela fait si longtemps que je n’ai pas traité avec httpd.conf que vous souhaiterez effectuer des recherches à ce sujet.

Si vous avez 000-default.conf, je vous suggère de vous rendre une faveur et de ne pas utiliser ce fichier pour un site de travail réel et de le conserver pour votre site fourre-tout. Je suggère un site fourre-tout pour vous aider avec des problèmes ultérieurs, tels que les accès par adresse IP uniquement et les accès pour les domaines/sites qui n'existent pas sur votre serveur.

Je pars du principe que votre site est défini dans 000-default.conf. Sinon, ignorez mes recommandations pour 000-default.conf, modifiez simplement votre fichier de configuration existant et créez-en un pour votre sous-domaine.

Si vous avez 000-default.conf, vous devrez créer un fichier de configuration pour chaque site. Voici un exemple de ce que je pense.

Créez le site fourre-tout (/etc/Apache2/sites-available/000-default.conf):

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        ErrorLog ${Apache_LOG_DIR}/error.log
        CustomLog ${Apache_LOG_DIR}/access.log combined
</VirtualHost>

Créez votre site parent (/etc/Apache2/sites-available/example.com.conf):

<VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /home/example.com/www
        ErrorLog /home/example.com/log/example.com_error_log
        CustomLog /home/example.com/log/example.com_access_log combined
        DirectoryIndex index.php
<Directory /home/example.com/www>
        Options -Indexes +IncludesNOEXEC +FollowSymLinks +ExecCGI
        Allow from all
        AllowOverride All
</Directory>
        RewriteEngine on
</VirtualHost>

Créez votre sous-domaine (/etc/Apache2/sites-available/my-sub-domain.example.com.conf):

<VirtualHost *:80>
        ServerName my-sub-domain.example.com
        ServerAlias www.my-sub-domain.example.com
        DocumentRoot /home/my-sub-domain.example.com/www
        ErrorLog /home/my-sub-domain.example.com/log/my-sub-domain.example.com_error_log
        CustomLog /home/my-sub-domain.example.com/log/my-sub-domain.example.com_access_log combined
        DirectoryIndex index.php
<Directory /home/my-sub-domain.example.com/www>
        Options -Indexes +IncludesNOEXEC +FollowSymLinks +ExecCGI
        Allow from all
        AllowOverride All
</Directory>
        RewriteEngine on
</VirtualHost>

Bien sûr, vous n'avez pas réellement besoin de déplacer votre site Web actuel. Vous voudriez simplement changer votre directive DocumentRoot pour votre site parent. De plus, j'ai inclus d'autres éléments de configuration. Vous voudrez rechercher ce dont vous avez réellement besoin. Portez une attention particulière à la sécurité. Vous ne voulez pas simplement couper et coller cet exemple de configuration "tel quel", bien que cela ne fonctionne évidemment pas avec le nom de domaine.

La prochaine chose à faire est de définir votre enregistrement DNS où vos sites SOA (déclaration d'autorité) sont définis. Souvent, il s’agit de votre registraire, mais ce n’est pas nécessairement le cas.

Votre enregistrement DNS ressemblerait à quelque chose comme vos entrées example.com et www.example.com qui devrait ressembler à ceci:

example.com    A    10.0.3.201
www.example.com    CNAME    example.com

my-sub-domain.example.com    A    10.0.3.201
www.my-sub-domain.example.com    CNAME    my-sub-domain.example.com

Il faudra un certain temps pour que les enregistrements DNS se propagent sur Internet. Attendez-vous entre 24 et 72 heures bien que certains serveurs DNS enregistrent vos modifications plus rapidement que cela.

La dernière chose à faire est de redémarrer Apache pour vous assurer que vos sites sont reconnus. Les modifications apportées aux fichiers de configuration sont mises en cache lors du redémarrage d'Apache.

1
closetnoc