web-dev-qa-db-fra.com

Erreur Apache: chevauchement de l'hôte virtuel _default_ sur le port 443

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.

59
Mark

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.

111
Daniel Sokolowski

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.

32
oarevalo

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:

  • Placez votre configuration SSL supplémentaire dans ce conteneur VirtualHost existant, ou
  • Mettez en commentaire l'ensemble de ce bloc VirtualHost et créez-en un nouveau. N'oubliez pas d'inclure toutes les options SSL pertinentes.
12
larsks

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.

3
Mike