J'ai quelques sites configurés comme VirtualHosts utilisant Apache qui fonctionnent bien depuis un certain temps. J'ai récemment changé le nom d'hôte du serveur en l'un des noms de domaine qui était servi, et l'ai également ajouté à / etc / hosts pointant vers l'adresse IP externe du serveur.
Depuis que je l'ai fait, accéder au domaine depuis mon ordinateur portable m'amène au défaut d'Apache "Ça marche!" page. Si je supprime 000-default de / etc / apache2 / sites-enabled /, il affiche le site correct. Essayer d'accéder au site avec le 'www.' le préfixe m'amène au site correct, que 000-default soit ou non activé dans les sites.
Sur la base de tout cela, je suppose que la configuration par défaut sert la page par défaut en raison de la façon dont j'ai configuré le nom d'hôte ou / etc / hosts (ou les deux), mais je ne peux pas comprendre comment désactiver cela pendant que en laissant ces paramètres tels quels. Toutes les suggestions sont les bienvenues!
Modifier - Ma configuration VirtualHost actuelle ressemble à ceci:
<VirtualHost *:80>
ServerName domain.com
ServerAlias www.domain.com
ServerAdmin [email protected]
DocumentRoot /srv/www/domain
ErrorLog /srv/www/domain/logs/error.log
CustomLog /srv/www/domain/logs/access.log combined
</VirtualHost>
Pour résumer: j'ai plusieurs VirtualHosts configurés, et c'est le seul qui ne fonctionne pas correctement. Je peux très bien accéder à http://www.domain.com , mais http://domain.com m'amène au défaut d'Apache "Ça marche!" page. Si je désactive la configuration 000 par défaut, elle affiche la page appropriée. Cela ne s'est produit qu'après avoir défini le nom d'hôte du serveur sur domain.com et ajouté une ligne vers / etc / hosts pointant domain.com vers l'adresse IP externe du serveur. J'aimerais les laisser de cette façon si possible.
Edit: j'ai couru apache2ctl -S
depuis /usr/sbin/apache2 -S
m'a donné "apache2: mauvais nom d'utilisateur $ {APACHE_RUN_USER}". Voici la sortie:
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server domain.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost domain.com (/etc/apache2/sites-enabled/000-default:1)
port 80 namevhost other.com (/etc/apache2/sites-enabled/other:1)
port 80 namevhost another.com (/etc/apache2/sites-enabled/another:1)
port 80 namevhost domain.com (/etc/apache2/sites-enabled/domain:1)
Syntax OK
la source
Réponses:
J'ai perdu cette question l'autre jour.
Lorsque vous disposez d'un conteneur <VirtualHost> sans composant ServerName, il utilise le nom d'hôte par défaut. Comme 000-default n'a probablement pas de composant ServerName, et est le premier par ordre alphabétique à être inclus, c'est pourquoi il répond pour hostname.com et ne permet pas à votre nom d'hôte explicitement déclaré de fonctionner.
la source
ServerName example.com
dans la configuration par défaut fonctionne très bien, cependant. Merci!Avez-vous une directive NameVirtualHost *: 80 quelque part?
Essayer:
Cela vous dira comment apache analyse le fichier de configuration. Avez-vous des configurations qui ont des adresses IP réelles ou toutes ont le *? En manque-t-il: 80? Apache n'aime pas les mélanger.
Avez-vous un nom de domaine Server.com ou un domaine ServerAlias.com par défaut?
la source
Vérifiez ServerName et ServerAlias dans la directive VirtualHost:
Lire: http://httpd.apache.org/docs/2.2/mod/core.html#serveralias , http://httpd.apache.org/docs/2.2/vhosts/
la source
Cela a fonctionné:
quand j'ai eu une faute de frappe, cela n'a PAS fonctionné (la directive ServerName deux fois):
Lorsque j'ai eu la directive ServerName deux fois, elle a continué à se résoudre sur le premier site répertorié (non illustré ici).
j'espère que cela aide quelqu'un ...
la source
J'ai eu un problème similaire et je l'ai résolu en définissant explicitement un ServerName dans le fichier httpd.conf principal, plutôt que de laisser apache le comprendre automatiquement. Je suppose que ce qu'Apache a décidé était le même que mon vhost (défini plus loin), donc celui par défaut "a gagné", remplaçant le paramètre vhost.
Je viens de définir httpd.conf ServerName sur un nom d'hôte que la machine a, je ne servirai jamais de pages Web.
la source