5 votes

Définir la page par défaut pour les hôtes virtuels Apache

Nous exécutons Apache sur un serveur avec plusieurs entrées VirtualHost. Chaque fois que quelqu'un accède au serveur par son adresse IP (http://198.147.xx.xx), l'un des sites web qui est un VirtualHost s'affiche. Ce n'est pas souhaitable. Nous préférerions qu'une page vide s'affiche si l'IP est accédée directement. Je ne suis pas sûr si le site choisi est simplement le premier qui apparaît dans la liste des entrées Virtual Host ou autre chose.

Nous voulons configurer une page par défaut, vide si quelqu'un accède au serveur par IP. Je pensais qu'en simplement configurant une autre entrée VirtualHost pour l'adresse IP, cela fonctionnerait, et cela semblait être le cas, mais maintenant l'accès à l'un des autres sites VirtualHost mène à la même page par défaut vide. Voici un exemple de notre configuration :

    DocumentRoot /vhosts/somesite.com/public
    ServerName somesite.com

        allow from all
        Options +Indexes
        AllowOverride All

    ServerAlias www.somesite.com

    DocumentRoot /vhosts/default/public

        allow from all
        Options +Indexes

Qu'est-ce que nous faisons de mal ici ? Y a-t-il une meilleure façon de configurer une page d'accueil par défaut pour toute personne accédant au serveur via une adresse IP ?

2voto

Si je me souviens bien, le comportement des hôtes virtuels fonctionne comme suit :

  • httpd recherche l'hôte virtuel avec les qualificateurs les plus spécifiques. (soit l'adresse IP, soit l'en-tête de l'hôte si NameVirtualHost a été déclaré)
  • En l'absence d'une entrée spécifique, le premier hôte virtuel défini est utilisé. Cela s'appelle l'hôte virtuel par défaut et c'est ce qui est normalement servi lorsqu'une demande est faite sans en-tête Host. (c'est-à-dire par adresse IP)

Le problème auquel vous êtes confronté maintenant est que votre hôte virtuel basé sur l'adresse IP est plus spécifique que votre hôte virtuel par défaut (au moins lorsque l'en-tête Host ne correspond pas à ServerName ou ServerAlias). Pour obtenir le comportement que vous recherchez, je pense que vous devriez faire ceci :

  • Créez un hôte virtuel par défaut de *:80 avec une page vide.
  • Modifiez votre hôte virtuel somesite.com pour que son ServerAlias contienne chaque nom que vous ne voulez pas rediriger vers l'hôte virtuel par défaut.

J'espère que quelqu'un aura une solution qui se rapproche davantage de l'obtention du résultat final souhaité; cela fait un moment et je serais intéressé à en apprendre davantage.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X