Dans quel ordre Apache charge-t-il les fichiers de configuration et lesquels?


8

Je cherche un serveur CentOS 6.5 avec une structure Web installée qui a été ajoutée au fil des ans par de nombreuses personnes. Il y a ce qui ressemble à 5 fichiers .conf actifs dans / conf, y compris httpd.conf.

Dans httpd.conf, l'inclut lit

Include conf.d/*.conf

et qui saisit tous les fichiers de ce répertoire, mais sans ordre spécifique que je sache, et que dire du répertoire / conf (no .d)?

Existe-t-il un paramètre qui énonce l’ordre de chargement ou est-il simplement extrait de z?

Je ne suis pas l'administrateur du serveur, je suis un développeur et le problème réside dans les chemins de téléchargement de fichiers dans un répertoire / Temp, où j'ai vérifié que le chemin spécifié est correct pour les fichiers qui me concernent.

Donc, la 1ère question est:

Apache charge-t-il tout depuis / conf ou existe-t-il une liste spécifiée quelque part?

La 2ème question serait:

Dans quel ordre Apache charge-t-il les fichiers par ordre alphabétique?

Enfin:

Est-ce qu'un fichier qui ne finit pas par .conf est inclus? Par exemple, si je nomme quelque chose comme myconfig.conf.old, Apache l'ignorera-t-il?

Réponses:


12

L'ordre est alphabétique. Il ne charge que ce que le chemin d'inclusion spécifie. Dans le cas de Include conf.d/*.confApache chargera tous les fichiers avec les noms se terminant par .conf.

Ceci est un extrait de la documentation Apache :

Les caractères génériques de style shell (fnmatch ()) peuvent être utilisés pour inclure plusieurs fichiers à la fois, dans l'ordre alphabétique . De plus, si Inclure pointe sur un répertoire plutôt que sur un fichier, Apache lira tous les fichiers de ce répertoire et de tous les sous-répertoires. Toutefois, l'inclusion de répertoires entiers n'est pas recommandée car il est facile de laisser accidentellement des fichiers temporaires dans un répertoire pouvant entraîner l'échec de httpd.


Merci, cela répond aux questions 1 et 2 certainement. J'ai jeté un œil à la documentation Apache, mais je n'ai pas trouvé de réponse.
Chrtp

De manière générale (l'ordre des éléments de configuration remplace les éléments précédents), ce qui est correct. Certainement si les commandes sont dans la même section de configuration. Mais par exemple, il est possible (en utilisant AllowOverride) de remplacer des éléments de configuration avec config dans un .htaccessfichier.
suspect

Désolé, j'ai modifié mon commentaire avant de voir le vôtre. Il n'y a pas de .htaccess dans ce cas, mais il y a un fichier commençant par 't' qui annule tout le reste. Je vais renommer ou déplacer le fichier.
Chrtp

1
@chrtp, et pourquoi un fichier commençant par tremplacer tout le reste?
Andrew Savinykh

1

Apache charge une configuration supplémentaire basée sur la directive "Include". Cela ressemble probablement à ceci:

Include conf.d/*.conf

Donc, évidemment, cela inclut tout dans "conf.d" qui ressemble à "* .conf".

Pour le rendre encore plus insensé, vous pouvez ajouter un nombre arbitraire de répertoires avec "include" pouvant tous contenir à peu près les mêmes fichiers de configuration, que tous se substitueraient joyeusement au démarrage ... par le fichier .htaccess dans divers répertoires hébergés.

Autant que je sache, httpd.conf est le premier, suivi des répertoires dans l'ordre dans lequel ils sont inclus, puis par ordre alphabétique.

Bon temps. Vous pouvez utiliser apachectl -t ou apachectl configtest pour avoir une idée de si votre configuration causera ou non des problèmes.


1
Merci, il semblerait que quelqu'un ait laissé un fichier appelé template.conf qui, bien sûr, se charge en dernier et remplace tout autre fichier spécifiant le chemin d'accès à / Temp. Je ne peux que deviner à quoi d'autre est cassé avec ça là!
Chrtp

1
@chrtp Pour ajouter à l'hilarité, les directives peuvent être spécifiées au moment de l'exécution en utilisant -C (pour les ajouter avant de lire les fichiers de configuration) et -c (pour les lire après les fichiers de configuration), afin que vous puissiez obtenir une configuration complètement différente à partir de la ligne de commande. au démarrage.
Satanicpuppy

1

Si vous souhaitez modifier l’ordre, ouvrez le premier fichier conf dans le répertoire sites-available et avant le premier VirtualHost *: 80, ajoutez votre code d’hôte virtuel.

Dans mon cas, je veux que hub.xxx.com.conf soit avant bayxxx.com.conf. J'ai donc ouvert hub.xxx.com.conf et placé l'hôte virtuel au début d'un fichier

Par exemple:

<VirtualHost *:80>
    DocumentRoot /www/hub.xxx.com/www/root
    ServerName hub.xxx.com
    ServerAlias *.hub.xxx.com
    <Directory "/www/hub.xxx.com/www/root">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www/bayxxx.com/www/root
    ServerName bayxxx.com
    ServerAlias www.bayxxx.com
    <Directory "/www/bayxxx.com/www/root">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.