IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

APACHE2 et les sous domaines


Sujet :

Apache

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut APACHE2 et les sous domaines
    bonjour

    je viens vous présenté la problématique qui se présente à moi

    J ai un domaine domaine.tld
    et 2 sous domaines
    site1.domaine.tld
    site2.domaine.tld

    On admet que les dns sont convenablement paramétré tous ces domaines pointes vers le même IP

    Pour géré ces domaines et ce serveur web j'utilise Webmin

    je souhaite que
    - les 3 domaines pointes vers 3 dossiers différents
    - toutes autres entrée pointe vers domaine.tld


    Difficulté rencontré les entrée site1.domaine.tld site2.domaine.tld pointe sur domaine.tld

    il semblerai que domaine.tld.conf soit le premier a etre pris en compte est donc les suivants sont ignorés



    ma config apache2 est la suivante

    dans domaine.tld.conf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DocumentRoot "/var/www/site0"
    ServerName domaine.tld
    ServerAlias *.domaine.tld domaine.tld
    <Directory "/var/www/site0">
    allow from all
    Options -Indexes
    </Directory>

    dans site1.domaine.tld.conf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DocumentRoot "/var/www/site1"
    ServerName site1.domaine.tld
    ServerAlias *.site1.domaine.tld site1.domaine.tld
    <Directory "/var/www/site1">
    allow from all
    Options -Indexes
    </Directory>

    dans site2.domaine.tld.conf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DocumentRoot "/var/www/site2"
    ServerName site2.domaine.tld
    ServerAlias *.site2.domaine.tld site2.domaine.tld
    <Directory "/var/www/site2">
    allow from all
    Options -Indexes
    </Directory>



    Merci pour votre attention

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Question : elle est où la directive NameVirtualHost et les <VirtualHost> et </VirtualHost> qui doivent encadrer tes différents jeux de directives ?

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci pour cette information
    je vois que ces instruction son dans
    /etc/apache2/site-available/default

    mais chez moi apache2 chaque virtualhost est configuré
    dans un fichier (.conf) séparés dans
    /etc/apache2/site-enabled/

    Pardon si je suis hors sujet.

    quoi qu'il en soit je n ai pas touché le fichier
    /etc/apache2/site-available/default

    ce qui donne ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <VirtualHost *>
            ServerAdmin webmaster@localhost
     
            DocumentRoot /var/www/
            <Directory />
                    Options FollowSymLinks
                    AllowOverride None
            </Directory>
            <Directory /var/www/>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride None
                    Order allow,deny
                    allow from all
                    # This directive allows us to have apache2's default start page
                    # in /apache2-default/, but still have / go to the right place
                    # RedirectMatch ^/$ /apache2-default/
            </Directory>
     
            ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
            <Directory "/usr/lib/cgi-bin">
                    AllowOverride None
                    Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                    Order allow,deny
                    Allow from all
            </Directory>
     
            ErrorLog /var/log/apache2/error.log
     
            # Possible values include: debug, info, notice, warn, error, crit,
            # alert, emerg.
            LogLevel warn
     
            CustomLog /var/log/apache2/access.log combined
            ServerSignature On
     
        Alias /doc/ "/usr/share/doc/"
        <Directory "/usr/share/doc/">
            Options Indexes MultiViews FollowSymLinks
            AllowOverride None
            Order deny,allow
            Deny from all
            Allow from 127.0.0.0/255.0.0.0 ::1/128
        </Directory>
     
    </VirtualHost>

    je ne vois pas pourquoi et surtout quoi touché dans se fichier ....

    Je dois dire que je compte encore sur vous ....
    je seche ....

    mais je continue mes recherches ...

    merci encore

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Pour les virtual hosts, il faut 2 choses :
    1. Qu'une directive (au moins) NameVirtualHost existe et soit prise en compte par Apache
    2. Que chaque groupe de directives par virtual host soit encadré dans une section <VirtualHost> présentant une signature identifiée par un NameVirtualHost

    Donc, dans ton cas, y a un NameVirtualHost qui existe mais dans default. Il faut d'abord t'assurer que ce fichier est pris en compte par Apache (i.e. vérifie l'include dans httpd.conf) pour que cette directive soit elle-même prise en compte. Si ce fichier, donc la directive, n'est pas pris en compte par Apache, ajoute NameVirtualHost dans httpd.conf avant l'include des fichiers pour tes VH.
    Ensuite, modifie chacun de tes fichiers de VH pour ajouter les <VirtualHost> et </VirtualHost> qui s'imposent. Pour savoir comment écrire le <VirtualHost>, il faut regarder ce qui est indiqué sur NameVirtualHost. Par exemple, si tu as NameVirtualHost *:80, il faut mettre <VirtualHost *:80>. Juste une remarque : si tu as NameVirtualHost * et que tu as bien mis <VirtualHost *> et que ça ne marque toujours pas, essaie de mettre *:port_ecoute_apache (*:80 par exemple) sur NameVirtualHost et les <VirtualHost> : il est parfois nécessaire de préciser le port pour qu'Apache fasse fonctionner correctement les VH.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci de pour ces explications détaillés

    mon fichier httpd.conf est effictevement vide
    mais j ai bien l include dans apache2.conf (non commenté donc actif dans)
    Include /etc/apache2/sites-enabled/

    Je me permet de reprendre en quelque mots plus résumé donc peut etre plus claire.

    Pour commencer est faire plus simple prenons que site0 et site1 ensuite je devrais pouvoir appliqué cela pour tous les autres.

    dans domaine.tld.conf (cf fichier complet plus haut)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ServerAlias *.domaine.tld domaine.tld
    je demande a apache de routé toutes les requetes
    "tous sou domaine(*)" vers /site0
    et dans un second temps
    dans site1.domaine.tld.conf (cf fichier complet plus haut)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ServerAlias *.site1.domaine.tld site1.domaine.tld
    je demande a apache de router toutes les requetes
    site1 vers /site1

    si je supprime la premiere instruction
    le site1 fonctionne mais dans ce cas
    et c'est que je souhaiterai que pour toute requete autre que site1.domaine.tld ou sit2.domaine.tld on tombe sur site0


    En esperant vous avoir fournis des infos plus exacte

    encore merci

    PS :
    En rédigeant se poste je réalise que j ai oublie de dire que (et c'est important non ?) que sur ce serveur j ai plusieurs domaines et plusieurs sous domaines.

    Autrement effectivement je n'aurai qua mettre mon domaine comme serveur par défaut.
    c'est ce que vous vouliez me dire peut etre ?

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Y a 2 choses qui m'ennuient : tu n'as pas confirmé la présence ou non présence de la directive NameVirtualHost qq part dans ta conf et des <VirtualHost> encadrant ta conf de VH (autre fichier que /etc/apache2/site-available/default), et surtout, même si ta conf de VH est correcte avec NameVirtualHost et tout le reste, ton ServerAlias *.domaine.tld domaine.tld dans domaine.tld.conf vaut pour site1.domaine.tld, ce qui n'est pas ce que tu veux.

    Aussi, j'essaierais ceci (mais je ne prétends pas que ça marchera !) :
    • Définir le DocumentRoot par défaut à /var/www/site0. J'imagine que cette conf se fait dans apache2.conf ou /etc/apache2/site-available/default (à ce niveau-là, je ne sais pas si le VH par défaut défini dans /etc/apache2/site-available/default suffit).
    • Mettre le NameVirtualHost qui va bien qq part dans la conf d'Apache.
    • Ne surtout pas définir de VH avec ServerAlias *.domaine.tld
    • Mais définir un VH pour site1.domaine.tld (et *.site1.domaine.tld) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      <VirtualHost *>
          DocumentRoot "/var/www/site1"
          ServerName site1.domaine.tld
          ServerAlias *.site1.domaine.tld
          <Directory "/var/www/site1">
              allow from all
              Options -Indexes
          </Directory>
      </VirtualHost>
    • Et définir un VH pour site2.domaine.tld (et *.site2.domaine.tld) :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      <VirtualHost *>
          DocumentRoot "/var/www/site2"
          ServerName site2.domaine.tld
          ServerAlias *.site2.domaine.tld
          <Directory "/var/www/site2">
              allow from all
              Options -Indexes
          </Directory>
      </VirtualHost>

    En gros, éviter le ServerAlias *.domaine.tld qui prend le pas sur tout et t'appuyer sur la conf par défaut d'Apache quand il ne trouve pas de VH correspondant à la demande. Je sais pas si je suis clair, dis-moi

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bon enfin voila la solution !!!!

    Pour commencer à noter que l édition des fichiers conf
    est incomplète (copier/coller de webmin)
    he oui celui ci supprime les balises virtualhost
    En édition (vim) elles sont bien présentes dans les fichiers.


    LE PROBLEME
    Lorsque apache recherchais site1.domaine.tild
    Il tombait en premier sur l'instruction *.domaine.tild
    donc il l exécutais sans ce soucier de site1.domaine.tild

    Je dois faire passé toute les instructions spécifique aux sous domaines site1.domaine.tild site2.domaine.tild site3.domaine.tild etc avant *.domaine.tild

    Dans Apache2 chaque virtualhost a sont fichier de .conf
    (domaine.tild.conf)

    Je ne sais pas comment ordonné l'ordre d'exécutions des fichiers ?? ET VOUS ???

    SOLUTION
    J ai fais un fichier de config global au domaine incluant les sous domaine.

    Je n'ai non plus 3 fichiers
    domaine.tild.conf
    site1.domaine.tild.conf
    site2.domaine.tild.conf
    mais 1 seul
    domaine.tild.conf
    En fait les 3 fichiers fusionnés dans l ordre adéquat

    domaine.tild.conf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <VirtualHost *>
        DocumentRoot "/var/www/site1"
        ServerName site1.domaine.tld
        ServerAlias *.site1.domaine.tld
        <Directory "/var/www/site1">
            allow from all
            Options -Indexes
        </Directory>
    </VirtualHost>
     
    <VirtualHost *>
        DocumentRoot "/var/www/site2"
        ServerName site2.domaine.tld
        ServerAlias *.site2.domaine.tld
        <Directory "/var/www/site2">
            allow from all
            Options -Indexes
        </Directory>
    </VirtualHost>
     
    ### ### ### ### ### ### ### ### 
    # POUR TOUS LES AUTRES SOUS DOM     # 
    # NON LISTE AU DESSUS                       # 
    ### ### ### ### ### ### ### ### 
     
    <VirtualHost *>
        DocumentRoot "/var/www/site0"
        ServerName *.domaine.tld
        ServerAlias *.domaine.tld
        <Directory "/var/www/site0">
            allow from all
            Options -Indexes
        </Directory>
    </VirtualHost>

    Merci a tous pour vos pistes et contributions
    Au plaisir de pouvoir en faire de même à l'occasion
    Bonne fin de journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Récupérer nom de domaine sans les sous domaine
    Par fabien14 dans le forum Langage
    Réponses: 2
    Dernier message: 16/01/2016, 13h15
  2. Rediriger tous les sous domaines sauf le principal
    Par eMeRiKa dans le forum Apache
    Réponses: 7
    Dernier message: 27/05/2009, 01h25
  3. Réponses: 5
    Dernier message: 05/03/2009, 13h09
  4. Réponses: 9
    Dernier message: 23/02/2009, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo