Jump to content

Apache - Cherche un setup de config avec vhosts


Recommended Posts

Salut,

Je cherche comment configurer Apache (version 1.3.29 dans mon cas) afin de conserver le fonctionnement de mon main server + main server en HTTPS, tout en ajoutant des VirtualHost basé sur le nom DNS.

J'ai lu les infos sur le site d'Apache:

http://httpd.apache.org/docs/1.3/vhosts/

Mais j'ai rien trouvé qui permet de faire ce que je veux.

------------------------------

J'explique mon setup actuel:

J'utilise Apache de manière simple (pour un serveur unique), 1 main server configuré qui répond à mon site http://www.domain.com. J'ai également une configuration qui répond pour les requêtes HTTPS pour la section sécurisée de ce site (qui en réalité est configuré comme 2 sites différents avec le VirtualHost configuré par défaut avec le http.conf d'origine). La page HTTP est simplement là pour donner une porte d'entrée sur le portail sécurisé (https://www.domain.com).

Sur Internic le nom de machine (A) est enregistré directement sur www.domain.com. Il n'y a pas un nom différent pour la machine et un CNAME pour le site.

Donc dans le main server je retrouve:

Port 80
<IfDefine HAVE_SSL>
Listen 80
Listen 443
</IfDefine>
DocumentRoot "/serveur/www"
...

<IfDefine HAVE_SSL>
<VirtualHost _default_:443>
DocumentRoot "/serveur/securewww"
ServerName www.domain.com
...
</VirtualHost>
</IfDefine>

-----------------------------

Je dois maintenant utiliser cette machine pour faire l'hébergement de plusieurs sites. Le VirtualHost sera basé sur les noms et non sur les adresses IP. Les hôtes virtuels auront un nom CNAME qui pointera vers l'adresse IP du serveur Web en question. L'hôte initial conservera son nom de machine (A).

Il y aura pour le moment 2 sites additionnels qu'Apache devra répondre, tout en conservant les réponses au site http://www.domain.com et https://www.domain.com.

Et c'est là que je bloque... d'après les infos retrouvés, le site par défaut (main server) est toujours là comme répondant si les VirtualHost ne trouvent pas réponse et non comme un site tout simplement pour les requêtes dirigés vers lui.

En utilisant le Wildcard <VirtualHost *> toutes les requêtes reçus s'ils ne trouvent pas preneur sont dirigé au premier VirtuaHost dans la liste, ...

Ce que je veux faire:

- Continuer d'utiliser le main server pour répondre à toutes les requêtes reçus à http://www.domain.com

- Continuer d'utiliser le HTTPS pour les requêtes reçus à https://www.domain.com.

- Ajouter des hôtes virtuels pour http://www.domain2.com et http://www.domain3.com

- Empêcher les requêtes ne trouvant pas preneur de se ramasser dans http://www.domain.com et les envoyer vers un tierce site virtuel qui s'occupera de cela.

- Empêcher les requêtes sécurisés HTTPS vers les hôtes vituels pour ne pas qu'elles soient redirigés vers le site HTTPS par défaut (https://www.domain.com).

Link to comment
Share on other sites

"Empêcher les requêtes ne trouvant pas preneur de se ramasser dans http://www.domain.com"

Mettez simplement en premier Vhost le site virtuel qui vous intéresse

Car, quand on tente de se connecter à un serveur mais qu'aucun Vhost ne correspond, ça tombe sur le premier

"Empêcher les requêtes sécurisés HTTPS vers les hôtes vituels pour ne pas qu'elles soient redirigés vers le site HTTPS par défaut"

là c'est moins simple... mais vous pouvez aussi mettre un vhost sur port 443 AVANT celui de https://www.domain.com

Ainsi les requêtes https sur autre domaine que https://www.domain.com seront redirigées vers cet autre site virtuel

Link to comment
Share on other sites

Salut,

J'ai testé et ça ne marche pas bien. Quand je tape l'adresse http://www.domain.com depuis un navigateur web.

Ce qui se produit c'est que toutes les requêtes qui sont "fructueuses", qui devrait atteindre le main serveur à l'adresse www.domain.com, se rendent au premier site virtuel www.domain2.com à la place.

Voici comment j'ai configuré le tout:

Port 80
<IfDefine HAVE_SSL>
Listen 80
Listen 443
</IfDefine>
User apache
Group apache
ServerAdmin root@localhost
DocumentRoot "/serveur/domain"
ServerName www.domain.com
...

NameVirtualHost *:80

<VirtualHost *:80>
ServerAdmin root@localhost.localdomain
DocumentRoot "/serveur/domain2"
ServerName www.domain2.com
...
</VirtualHost>

<VirtualHost *:80>
ServerAdmin root@localhost.localdomain
DocumentRoot "/serveur/domain3"
ServerName www.domain3.com
...
</VirtualHost>

Et comme spécifié dans l'aide d'Apache, les requêtes ne trouvant pas preneur dans les VirtualHost sont envoyé au premier hôte virtuel.

Alors comment faire pour dire à Apache que le site non-virtuel www.domain.com que je retrouve dans mon main server ne doit pas être redirigé au premier site virtuel ?

Link to comment
Share on other sites

oui bon j'ai compris entre-temps en lisant ceci depuis le site web d'Apache:

If you are adding virtual hosts to an existing web server (Le main server en l'occurence), you must also create a <VirtualHost> block for the existing host. The ServerName and DocumentRoot included in this virtual host should be the same as the global ServerName and DocumentRoot. List this virtual host first in the configuration file so that it will act as the default host.

Bon en faisant ceci ça fonctionne !

Le site qui répond par défaut est celui d'origine (http://www.domain.com) et si je tapes l'adresse du site secondaire (http://www.domain2.com) c'est le site secondaire qui répond !!!

Malgré tout ça, il se produit quand même que les requêtes infructueuses atteigneront le site principal au-lieu d'une genre de prison (jail) que j'aurais configuré pour premier site virtuel. Mais c'est pas si grave puisque les adresses ne changeront probablement pas, je ne fais pas un hébergement massif qui pourrait occasioner l'ajout/addition fréquents de nouveaux sites et que les DNS soient conservés un peu partout.

Reste à voir si c'est possible de faire quelque chose avec le HTTPS. D'après Apache il est impossible de faire du multiple HTTPS avec les VirtualHost à cause de SSL. Donc existe-t-il une solution pour empêcher toutes requêtes vers les adresses correspondant aux sites virtuels ?

De manière à ce que les requêtes https://www.domain.com (qui est la même adresse que serveur principal et le premier site virtuel par défaut) fonctionnent et que les requêtes https://www.domain2.com, https://www.domain3.com, ... ne soient pas répondus par HTTPS ?

Link to comment
Share on other sites

J'ai compris qu'il n'est pas possible d'avoir plus d'un serveur HTTPS sur la même machine à cause du fonctionnement de SSL (un canaux sécurisé SSL doit être ouvert avant même d'envoyer la requête HOST: vers le serveur ce qui fait que le certificat utilisé ne peut pas être déterminé et être associé aux serveurs virtuels spécifiques).

Malgré tout ça, voici un document que j'ai trouvé sur la possibilité d'avoir du multi-sites HTTP et HTTPS sur le même serveur.

http://arnofear.free.fr/linux/apache2-1.php

... ça semble faux comme infos !?!?! :francais:8)

-------------------------

Malgré tout ça, mon problème n'est pas réellement ça. Moi je veux au contraire que le monsieur qui veut visiter le site web www.domain2.com, si par erreur il tape https://www.domain2.com, n'atteignent pas le site par défaut en HTTPS qui est https://www.domain.com. Donc faire un site virtuel par défaut HTTPS pour toutes les requêtes qui aboutira à une page web HTTP 404 et ensuite un site HTTPS qui répondera à mon site https://www.domain.com.

Mais je crois avoir répondu à ma question à 90% en écrivant ce texte. Ce qui peut être fais c'est:

<IfDefine HAVE_SSL>
<VirtualHost *:443>
DocumentRoot "/serveur/jailhttps"
ServerName jail.domain.com
...
</VirtualHost>

<VirtualHost *:443>
DocumentRoot "/serveur/wwwhttps"
ServerName www.domain.com
...
</VirtualHost>
</IfDefine>

La seule chose qui se produira pour les requêtes HTTPS infructueuse, c'est qu'elles obtiendront un canal SSL généré pour le site www.domain.com.

Est-ce que ça peut avoir du sens ? Sinon, est-ce que l'option proposé par le lien plus haut est réellement possible d'après-vous ?

Merci

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...