web-dev-qa-db-fra.com

Inclure des fichiers dans Apache HTTP Server version 2.2 httpd.conf

J'ai un gros fichier httpd.conf, dont la plupart sont des hôtes virtuels. Existe-t-il un moyen de créer un fichier, par exemple virtual_hosts.conf, et de l'inclure à partir de httpd.conf? J'ai googlé un peu, mais je n'arrive pas à trouver grand-chose en ce qui concerne les inclus, juste le chargement du module.

20
Josh

Des informations sur les fichiers Apache httpd.conf peuvent être trouvées sur ici .

Certains extraits ont été copiés à partir de ce site Web pour garantir que les informations ne sont pas perdues si le lien était obsolète:

Include /usr/local/Apache2/conf/ssl.conf
Include /usr/local/Apache2/conf/vhosts/*.conf

Chemins relatifs:

Include conf/ssl.conf
Include conf/vhosts/*.conf

Caractères génériques:

Include conf/vhosts/*/*.conf
39
JakePaulus

Je sépare chaque hôte virtuel dans son propre fichier de configuration vhost, de cette façon vous ne vous retrouvez pas à chercher dans un document géant à la recherche d'une petite directive. Similaire au post de Quanta:

Include /etc/Apache2/vhosts.d/*.conf

Placez-le simplement comme dernière ligne dans votre httpd.conf

puis divisez simplement votre vhosts.conf en fichiers individuels pour chaque domaine, c'est-à-dire.

domain1.conf
domain2.conf
domain3.conf
etc.... 

beaucoup plus facile à gérer. -sean

8
Sean Kimball

Vous pouvez le faire avec la directive Include :

Include /path/to/virtual_hosts.conf
6
quanta

IncludeOptional

Vous pouvez également utiliser la directive IncludeOptional

IncludeOptional conf/vhosts/*.conf

Dans ce cas, il ne peut donc y avoir aucun fichier approprié. Ou comme dit exactement dans la documentation,

Il fonctionne de manière identique à la directive Include, mais il sera ignoré en silence (au lieu de provoquer une erreur) si des caractères génériques sont utilisés et qu'ils ne correspondent à aucun fichier ou répertoire ou si aucun chemin de fichier n'existe sur le système de fichiers.

MAIS!

Faites attention au fait que certaines versions d'Apache ne parviennent pas à démarrer dans les cas où "le chemin du fichier n'existe pas sur le système de fichiers". Comme dans l'exemple ci-dessus s'il n'y a pas de répertoire conf/vhosts/.

Donc, dans un tel problème, vous pouvez en fait être limité dans l'utilisation sûre de cette directive en n'utilisant pas certains sous-répertoires lorsque vous n'êtes pas sûr s'ils existent

Comme une telle manière:

<VirtualHost *:80>

DocumentRoot    "/var/www/example.com"
ServerName      "example.com"
ServerAlias     "www.example.com" "example.com" 
...

IncludeOptional /var/www/example.com/*.httpd.conf

</VirtualHost>



<VirtualHost *:80>

DocumentRoot    "/var/www/other.org"
ServerName      "other.org"
ServerAlias     "www.other.org" "other.org" 
...

IncludeOptional /var/www/other.org/*.httpd.conf

</VirtualHost>

Quand certains aiment

IncludeOptional /var/www/other.org/*.httpd.conf

will fonctionne bien (avez-vous un fichier correspondant au masque donné ou non), mais

IncludeOptional /var/www/other.org/config_optional_subdir/*.conf

échouera s'il n'y a pas un tel sous-répertoire config_optional_subdir.

Notez que

IncludeOptional /var/www/other.org/extra.httpd.conf

échouera aussi si au moins un des sites n'aura pas exactement spécifié fichier extra.httpd.conf. Les caractères génériques sont la clé.


Donc, si une configuration de site commune est créée et peut être recréée automatiquement par un modèle , mais certains sites concrets nécessitent une configuration Apache supplémentaire qui ne peut pas être écrite uniquement dans un fichier .htaccess - vous pouvez utiliser cette approche.

0
FlameStorm