AngeZanetti.com

Internet et ses usages, développement Web et humeurs diverses

Ajouter un sous domaine sur son serveur dédié avec Apache2

Ces derniers jours j’ai été confronté deux fois au problème de mise en place de sous domaine sur un serveur dédié, et à chaque fois ce fut une galère. Entre la documentaion trop complète et les différents tutos sur le web qui racontent tout et n’importe quoi j’ai passé plusieurs heures à chercher, modifier, effacer des fichiers de config.

Pour éviter de me reprendre la tête, et en espérant que cela puisse servir à quelques personnes, voici la marche à suivre :

Cas n°1 : Votre domaine pointe déjà vers le serveur dédié, vous voulez juste créer un sous domaine associé à un répertoire

C’est le plus simple, même si, sur le web, on trouve tout et son contraire pour résoudre ce problème simple en apparence …

Vous avez donc un domaine – toto.me – dont le champs A des DNS pointe vers l’IP de votre serveur . Vous voulez créer un sous domaine type sub.toto.me qui pointe vers un dossier quelconque, par exemple /home/toto/www/sub

Donc première chose à faire il faut ajouter un champ CNAME à vos résolutions DNS, afin que sub.toto.me pointe vers toto.me

Une fois que vous avez fait ça, il faut attendre, la propagation des DNS peut prendre du temps, beaucoup de temps. En gros il faut compter 3-4 heures…

Maintenant attaquons nous à Apache, c’est souvent là qu’il y a le plus d’erreurs, de confusions même si, au final, c’est assez simple. Il faut éditer le fichiers /etc/apache2/sites-available/default et y ajouter les lignes suivantes :

<VirtualHost *:80>
 DocumentRoot /home/toto/www/sub
 ServerName sub.toto.me
</VirtualHost>

Ensuite il suffit de redémarrer Apache avec un

 sudo /etc/init.d/apache2 restart

et le tour est joué !

 

Cas n°2 : Votre domaine pointe vers un autre serveur et vous voulez rediriger un sous domaine vers un port autre que 80

C’est déjà un peu plus compliqué mais c’est un problème que nous avons rencontré au coworkingLille avec Pierre. L’idée était de mettre un sous domaine de coworkinglille.com sur notre serveur de dev local pour tester une appli Node.Js en production. Pierre à donc créer un sous domaine à coworkinglille qui pointe avec CNAME vers l’IP de notre serveur de dev.

Ensuite il faut rediriger tout ce qui arrive de ce nom de domaine vers l’IP locale et le port 3000 – par défault sous Node.JS.

Encore une fois, il faut éditer le fichiers /etc/apache2/sites-available/default et y ajouter un virtualhost dans lequel on va utiliser le mod_proxy d’Apache

<VirtualHost *:80>
  ServerName sub.coworkinglille.com
 ProxyRequests Off
  ProxyVia Block
  <Proxy *>
    Order deny,allow
    Allow from All
  </Proxy>
  ProxyPass / http://127.0.0.1:3000/
  ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

ATTENTION : il faut bien mettre ProxyVia et ProxyRequest à block & Off sinon vous transformez votre serveur en OpenProxy, ce qui n’est pas térrible en terme de sécurité !

Normalement, après un redémarrage d’Apache, toutes requêtes vers sub.coworkinglille.com sera redirigé vers les port 3000 local et inversement !

En espérant que ce post vous sera autant utile qu’a moi !

N.B : Ce Tuto est valable pour un serveur Ubuntu mais il n’y pas de raisons que cela ne fonctionne pas avec d’autres distributions, faites juste attention à installer les paquets et dépendances si besoin.

15 Comments

  1. Dimitri Larue

    June 28, 2012 at 12:02

    Et si tu veux faire des sous domaine dynamique histoire de pas te taper la config à chaque fois :p

    ServerName toto.net
    ServerAlias *.toto.net

    DocumentRoot /home/toto/public_html/www
    VirtualDocumentRoot /home/toto/public_html/sub/%1

  2. Merci pour ce tuto.
    Je crois maintenant que sur ubuntu on peut pour redémarrer utiliser service :
    sudo service apache2 restart

    • Xavier

      June 29, 2012 at 11:01

      Effectivement, mais j’utilise plus naturellement init.d :)
      Pour être tatillon on peut même uniquement reloader Apache, pas besoin de le redémarrer !

  3. Merci pour se résumé qui devrait me servir. Juste une question : Une petite erreur de frappe à la ligne

    ServerName sub.toto/me

    ou c’est bien /me au lieu de .me ?

  4. ENFIN un VRAI tutoriel, CLAIR NET et PRÉCIS.

    Je te remercie énormément, il me suffisait juste de créer un sous domaine pour mon api.. Bonne continuation !!

  5. merci ça fait 2 h que je tournai en rond

  6. MERCI !
    J’avais justement ce problème (cas n°2) mais avec un node js qui tourne sur le même serveur apache que l’app php avec laquelle elle interagit.

    Je suis frustré car j’ai perdu le côté asynchrone de node (je n’ai plus une requête socket.io qui reste ouverte mais une succession de requêtes GET / POST.
    Si ça vous parle, pensez-vous qu’il me soit possible de retrouver le côté asynchrone de node avec cette configuration?
    Bonne journée à vous les Lillois (la meilleur des région ;D) ;)

  7. Salut Xavier,
    Si c’est exactement ce que je cherchais :)
    Merci !

Répondre

© 2016 AngeZanetti.com

Theme by Anders NorenUp ↑