Question Apache ne respecte pas la directive ServerName pour un site particulier


J'ai quelques sites configurés en tant qu'hôtes virtuels à l'aide d'Apache qui fonctionnent correctement depuis un certain temps. J'ai récemment remplacé le nom d'hôte du serveur par l'un des noms de domaine en cours de traitement et l'ai également ajouté dans / etc / hosts en indiquant l'adresse IP externe du serveur.

Depuis que j'ai fait cela, accéder au domaine depuis mon ordinateur portable me conduit au défaut d'Apache "Ça marche!" page. Si je supprime 000-default de / etc / apache2 / sites-enabled /, il affichera le site correct. Essayer d'accéder au site avec le 'www.' Le préfixe m'amène au bon site, que 000-default soit activé ou non sur les sites.

Sur la base de tout cela, je suppose que la configuration par défaut sert la page par défaut à cause de la façon dont j'ai configuré le nom d'hôte ou / etc / hosts (ou les deux), mais je ne vois pas comment le désactiver. en laissant ces paramètres tels qu'ils sont. Toutes les suggestions sont les bienvenues!

Edit - Ma configuration actuelle VirtualHost ressemble à ceci:

<VirtualHost *:80>
    ServerName domain.com
    ServerAlias www.domain.com
    ServerAdmin me@domain.com

    DocumentRoot /srv/www/domain

    ErrorLog /srv/www/domain/logs/error.log
    CustomLog /srv/www/domain/logs/access.log combined
</VirtualHost>

Résumer: J'ai plusieurs hôtes virtuels configurés, et c'est le seul qui ne fonctionne pas correctement. Je peux accéder http://www.domain.com tout va bien, mais http://domain.com me prend au défaut d'Apache "ça marche!" page. Si je désactive la configuration par défaut de 000, elle affiche la page appropriée. Cela ne s'est produit qu'après que j'ai défini le nom d'hôte du serveur sur domain.com et que j'ai ajouté une ligne à / etc / hosts pointant domain.com sur l'adresse IP externe du serveur. Je voudrais laisser ceux de cette façon si possible.

Modifier: Iran apache2ctl -S puisque /usr/sbin/apache2 -S m'a donné "apache2: nom d'utilisateur incorrect $ {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

8
2017-10-15 04:41


origine


domaine.com est-il utilisé dans le fichier principal httpd.conf en tant que ServerName? ou apache2ctl.conf vous semblez utiliser ubuntu, le nom peut donc différer. - Prix


Réponses:


Perdu cette question l'autre jour.

Lorsque vous avez un conteneur <VirtualHost> sans composant ServerName, il utilisera le nom d'hôte par défaut. Comme 000-default n'a probablement pas de composant ServerName et est le premier alphabet à être inclus, c'est pourquoi il répond pour hostname.com et n'autorise pas le nom d'hôte explicitement déclaré.


10
2017-10-19 17:27



Je vois, un moyen de résoudre ce problème? Je veux que la configuration par défaut gère tous les domaines non gérés, mais je ne veux pas qu'elle gère ce domaine particulier. - John Debs
donnez-lui un domaine différent de celui utilisé dans une configuration, ou renommez-le en zzz-default pour qu'il soit appelé en dernier. - karmawhore
Ok, je pense que je comprends tout maintenant. J'ai essayé zzz-default mais ce n'est pas le comportement exact que je voulais. Réglage ServerName example.com Dans la configuration par défaut, cela fonctionne très bien. Merci! - John Debs


Avez-vous une directive NameVirtualHost *: 80 quelque part?

Essayer:

/usr/sbin/apache2 -S

Cela vous dira comment Apache analyse le fichier de configuration. Avez-vous des configs qui ont une adresse IP réelle ou qui ont tous le *? Il vous en manque un: 80? Apache n'aime pas les mélanger.

Avez-vous un nom de domaine ServerName.com ou ServerAlias ​​domain.com par défaut?


4
2017-10-15 05:02



Oui, je l'ai dans mon /etc/apache2/posts.conf. J'ajouterai un résumé à la question qui, espérons-le, le rendra plus clair. - John Debs
Ma configuration 000-default est intacte, elle n’a aucune directive ServerName ou ServerAlias. - John Debs
NameVirtualHost est obsolète. - Sam


Vérifiez la directive ServerName et ServerAlias ​​dans VirtualHost:

<VirtualHost *:80>
ServerName domain
ServerAlias www.domain.com
ServerAlias *.domain.com
</VirtualHost> 

Lis: http://httpd.apache.org/docs/2.2/mod/core.html#serveralias, http://httpd.apache.org/docs/2.2/vhosts/


1
2017-10-15 04:50



C'est fondamentalement la façon dont les choses sont mises en place maintenant. J'ai posté ma config dans la question. - John Debs


Cela a fonctionné:

<VirtualHost *:80>
    DocumentRoot /var/www/www.mydomain.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
</VirtualHost>

quand j'ai eu une faute de frappe, cela n'a pas fonctionné (la directive ServerName deux fois):

<VirtualHost *:80>
    DocumentRoot /var/www/www.mydomain.com
    ServerName mydomain.com
    ServerName www.mydomain.com
</VirtualHost>

Lorsque j'ai eu la directive ServerName deux fois, la résolution du premier site répertorié (non illustrée ici) a été maintenue.

espérons que cela aide quelqu'un ...


0
2018-01-16 06:52





J'ai eu un problème similaire et je l'ai corrigé en définissant explicitement un nom de serveur dans le fichier principal httpd.conf, au lieu 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 tard), donc celui par défaut "a gagné", écrasant le paramètre vhost.

Je viens de définir le nom de serveur httpd.conf sur un nom d’hôte de cette machine. Je ne servirai jamais de pages Web.


0
2018-01-14 03:03