Je reçois cette erreur en essayant de démarrer Apache.
chevauchement de virtualhost par défaut sur le port 443
J'essaie de configurer SSL. Presque toutes les solutions en ligne ajoutent:
NameVirtualHost *:443
au fichier de configuration, mais Apache ne parvient toujours pas à démarrer et dit juste
Le démarrage de l'action a échoué. les journaux Apache peuvent avoir plus d'informations
Il n'y a aucune information dans les journaux Apache.
Pour résoudre le problème sur un système Debian/Ubuntu, modifiez le fichier /etc/Apache2/ports.conf
fichier de paramètres en ajoutant NameVirtualHost *:443
à elle. Ma ports.conf
est la suivante pour le moment:
# /etc/Apache/ports.conf
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/Apache2/sites-enabled/000-default
# This is also true if you have upgraded from before 2.2.9-3 (i.e. from
# Debian etch). See /usr/share/doc/Apache2.2-common/NEWS.Debian.gz and
# README.Debian.gz
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/Apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
NameVirtualHost *:443
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
NameVirtualHost *:443
Listen 443
</IfModule>
De plus, assurez-vous que 'sites-available/default-ssl' n'est pas activé, tapez a2dissite default-ssl
pour désactiver le site. Pendant que vous y êtes, tapez a2dissite
seul pour obtenir une liste et voir s’il existe d’autres paramètres de site que vous avez activés qui pourraient être mappés sur le port 443.
Sur une installation Vanilla Apache2 dans CentOS, lors de l’installation de mod_ssl, un fichier de configuration sera automatiquement ajouté dans:
{Apache_dir}/conf.d/ssl.conf
Ce fichier de configuration contient une définition d'hôte virtuel par défaut pour le port 443, nommée par défaut: 443. Si vous avez également votre propre définition d’hôte virtuel pour 443 (c’est-à-dire dans httpd.conf), vous aurez un conflit. Puisque les fichiers conf.d sont inclus en premier, ils gagneront les vôtres.
Pour résoudre le conflit, vous pouvez supprimer la définition d'hôte virtuel de conf.d/ssl.conf
ou mettez-le à jour selon vos propres paramètres.
Il est fort peu probable que l'ajout de NameVirtualHost *:443
est la bonne solution car il existe un nombre limité de situations dans lesquelles il est possible de prendre en charge des hôtes virtuels nommés via SSL. Lisez this et this pour certains détails (il existe peut-être de meilleurs documents; ce sont juste ceux que j'ai trouvés qui discutent de la question en détail).
Si vous utilisez une configuration Apache relativement standard, vous avez probablement ceci quelque part:
<VirtualHost _default_:443>
Votre meilleur pari est soit:
VirtualHost
existant, ouVirtualHost
et créez-en un nouveau. N'oubliez pas d'inclure toutes les options SSL pertinentes.J'ai rencontré ce problème parce que j'avais plusieurs entrées génériques pour les mêmes ports. Vous pouvez facilement vérifier cela en exécutant Apache2ctl -S
:
# Apache2ctl -S
[Wed Oct 22 18:02:18 2014] [warn] _default_ VirtualHost overlap on port 30000, the first has precedence
[Wed Oct 22 18:02:18 2014] [warn] _default_ VirtualHost overlap on port 20001, the first has precedence
VirtualHost configuration:
11.22.33.44:80 is a NameVirtualHost
default server xxx.com (/etc/Apache2/sites-enabled/xxx.com.conf:1)
port 80 namevhost xxx.com (/etc/Apache2/sites-enabled/xxx.com.conf:1)
[...]
11.22.33.44:443 is a NameVirtualHost
default server yyy.com (/etc/Apache2/sites-enabled/yyy.com.conf:37)
port 443 namevhost yyy.com (/etc/Apache2/sites-enabled/yyy.com.conf:37)
wildcard NameVirtualHosts and _default_ servers:
*:80 hostname.com (/etc/Apache2/sites-enabled/000-default:1)
*:20001 hostname.com (/etc/Apache2/sites-enabled/000-default:33)
*:30000 hostname.com (/etc/Apache2/sites-enabled/000-default:57)
_default_:443 hostname.com (/etc/Apache2/sites-enabled/default-ssl:2)
*:20001 hostname.com (/etc/Apache2/sites-enabled/default-ssl:163)
*:30000 hostname.com (/etc/Apache2/sites-enabled/default-ssl:178)
Syntax OK
Notez qu’au début de la sortie se trouvent quelques lignes d’avertissement. Ceux-ci indiqueront quels ports créent les problèmes (cependant, vous le saviez probablement déjà).
Ensuite, regardez à la fin de la sortie et vous pouvez voir exactement quels fichiers et quelles lignes les virtualhosts sont définis qui créent le problème. Dans l'exemple ci-dessus, le port 20001 est attribué à la fois dans /etc/Apache2/sites-enabled/000-default
à la ligne 33 et /etc/Apache2/sites-enabled/default-ssl
à la ligne 163. De même *:30000
est listé dans 2 endroits. La solution (dans mon cas) consistait simplement à supprimer l'une des entrées.