1 votes

Pourquoi cette définition de VirtualHost s'active-t-elle lorsque le ServerName ne correspond pas?

J'ai un serveur httpd24 que je veux utiliser pour servir plusieurs domaines.

J'ai 3 définitions VirtualHost.

   ServerName one.example.com
   # SSL stuff
   DocumentRoot "/opt/rh/httpd24/root/var/www/one

   ServerName two.example.com
   # SSL stuff
   DocumentRoot "/opt/rh/httpd24/root/var/www/two

   Redirect / https://two.example.com

L'idée étant que si l'URL exacte one.example.com ou two.example.com est entrée, elles recevront les pages appropriées. Si un autre domaine est reçu, je veux rediriger vers l'URL https://two.example.com.

Cependant, je constate que si j'entre https://three.example.com, je ne suis pas redirigé, mais le contenu de one.example.com est servi à la place.

Notez que https://two.example.com fonctionne comme prévu. Mon problème est que je m'attends à ce que les domaines inconnus soient redirigés, mais au lieu de cela, ils sont résolus comme s'ils étaient one.example.com.

Le RPM que j'ai installé à l'origine était httpd24-httpd-2.4.27-8.el6.1.x86_64.

Des idées sur ce qu'il se passe?

1voto

snowdude Points 2790

La première entrée HOT virtual devient en général l'hôte virtuel par défaut qui sera utilisé pour gérer les requêtes qui ne sont pas associées aux entrées d'hôte virtuel suivantes.
(simplifié ; https://httpd.apache.org/docs/2.4/vhosts/details.html fournit une explication beaucoup plus approfondie...)

La chaîne _default_ dans une entrée VirtualHost, est juste un alias pour *, en pratique cela ne fait généralement pas d'une entrée VirtualHost particulière l'hôte virtuel par défaut lorsque ce n'est pas la première définition...

Changez l'ordre de vos définitions d'hôte virtuel et votre problème devrait être résolu.

   Redirect / https://two.example.com
   # ServerName not needed
   # Tout vhost qui inclut le wildcard magique _default_ se voit attribuer le même ServerName que le serveur principal. 
   # SSL stuff

   ServerName one.example.com
   # SSL stuff
   DocumentRoot "/opt/rh/httpd24/root/var/www/one

   ServerName two.example.com
   # SSL stuff
   DocumentRoot "/opt/rh/httpd24/root/var/www/two

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