JaliosXperience
fr en
Path > Home > Forums > French Forum
Link

Solutions envisageables pour une webapp multisites ?

Jean-Marc Buatois - on 11/9/07 at 4:04 PM

Bonjour,
Je souhaiterais avoir votre avis pour une problématique assez générale. Dans le cadre d'une webapp hébergeant plusieurs sites distincts, nous souhaiterions que chaque site puisse être accessible via une URL dont le nom de domaine est spécifique.
Par exemple :


L'idée que nous avions pour cela est la suivante :

  • Mise en place d'un reverse proxy Apache permettant de rediriger les requêtes vers le serveur applicatif hébergeant la webapp JCMS
  • Mise en place d'une réécriture d'url afin de transformer les urls du genre "http://www.siteX.fr/" en "http://www.siteX.fr/jcms/id_categ_home_siteX"


Le premier point permet d'accéder à la même webapp avec des urls différentes. Le deuxième point permet d'avoir des urls "d'entrée" différentes pour chaque site, la réécriture permettant de "rediriger" vers la catégorie de la home.
Cette solution rencontre cependant un problème pratique : JCMS impose que chaque url différente d'accès soit associée à une adresse IP différente de reverse proxy. L'idée d'avoir un reverse proxy sur une seule machine disposant de plusieurs machines semble problématique car c'est toujours la même adresse IP de sortie qui est vue par le serveur applicatif. Pour contourner ce problème, on peut imaginer d'avoir un reverse proxy (machine) par "site", mais cette solution devient vite inenvisageable si la webapp contient un nombre conséquent de sites.
D'ou la question : Avez vous déjà rencontré ce genre de problématique et comment l'avez vous résolu ?

Olivier Jaquemet - on 11/9/07 at 5:03 PM

Bonjour Laurent,

Si il s'agit de sites complètement distincts (ou avec peu de contenus en commun qui pourrait être gérer par de l'import ou de la syndication), alors je pense qu'il est préférable d'utiliser 2 webapps. Cela évite des problèmes de droits utilisateurs, d'espace de travail, etc...
=> Pourquoi avez vous retenu le choix d'une seul webapp pour 2 sites ?

Si il s'agit "simplement" de présenter un site/portail particulier si on arrive depuis un domaine ou d'un autre, alors je pense qu'il suffit de configurer 2 virtual host (mod_jk), et lors de l'accès à la racine, apache redirige vers le portail de ce domaine. Le reste de la navigation est transparent.
Derrière, c'est la conception des différents portail qui assurera l'impossibilité à l'utilisateur d'avoir connaissance de l'autre domaine. Vous pouvez même envisager une right policy dépendant du domaine si vous souhaitez garantir la visibilité des contenus uniquement sur un domaine ou un autre. (workspace 1 = domaine 1 par exemple)
=> Est-ce qu'une contrainte technique/fonctionnelle vous empêche de faire ce choix ?

Olivier

PS: concernant les reverse proxy, c'est une solution que je ne recommande pas sauf en dernier dernier recours. Et en respectant au moins les contraintes suivantes (liste non exhaustive) :

  • context path identique coté tomcat et coté apache
  • même protocole coté tomcat et apache (http/https)
  • Apache 2.2

De manière général, mettre en place une solution avec mod_jk est toujours plus simple, plus élégante et plus performante. Avec mod_jk, toute la logique de navigation reste concentrer dans JCMS et il n'y a pas de siouxerie à mettre oeuvre... :)

Jean-Marc Buatois - on 11/13/07 at 9:57 AM

Bonjour,

En fait j'ai posé le problème de manière particulière (pour 2 sites) mais je me pose le problème de manière plus générale.

Nous rencontrons par exemple cette demande pour 2 projets différents, l'un concernant effectivement 2 sites, l'autre concernant 50 sites (petits en taille mais avec des urls d'accès différentes).

Le choix d'avoir une seule webapp répond souvent aux contraintes suivantes :

  • cout de licence
  • facilité d'administration (un seul back office partagé)
  • possibilités d'usine à site
  • partage de contenus entre sites (mais maintenant il y a l'import/export).


Je vais tester la solution virtual hosts + réécriture d'url pour la home de chaque site. Si ça fonctionne, ça pourrait répondre au besoin.

Olivier Jaquemet - on 11/13/07 at 10:54 AM

Après réflexion, il y a encore plus simple que ça.

Coté Apache :

  • un vhost par site et c'est tout.

Coté JCMS :

  • un espace de travail par site
  • une right policy qui associe un espace de travail à un domaine. Exemple :
    • www.dupont.com <=> Espace de Travail Dupont & Co
    • www.martin.com <=> Espace de Travail Martin& Co

Ainsi en arrivant sur un domaine, JCMS cherche un portail, la gestion des droits s'applique, le rightpolicy va filtrer tout les portails, sauf ceux qui sont autorisé à la consultation pour le domaine/workspace en question. Tadam ! :D

En utilisant cette solution :

  • la configuration Apache reste totalement indépendante des choix fait dans JCMS. Pas besoin de redirection.
  • pas de risque que des utilisateurs d'un site A consulte le portail d'un site B.
  • on blinde les droits utilisateur, plus aucun risque que les contributeurs d'un site A utilisent les contenu d'un site B

Jean-Marc Buatois - on 11/13/07 at 11:16 PM

Ah oui ! j'aime bien cette solution ! Très élégante !

Le problème des réécritures d'url est effectivement qu'elles font apparaitre des informations propres à JCMS (id des catégories racine de site) au niveau d'Apache, ce qui n'est pas terrible...mais bon faute de mieux...

Mais là, effectivement tout est bien compartimenté.

Je me pose quand meme une question pour l'accès à la home de chaque site. Chaque site doit avoir sa catégorie racine de navigation, or on ne peut définir qu'une seule catégorie racine par webapp. Je vois bien une première solution : associer pour chaque espace de travail une portlet redirection vers la catégorie "home" de l'espace. Le RightPolicyFilter faisant son travail, il retiendra la bonne redirection...

Olivier Jaquemet - on 11/14/07 at 10:24 AM

Si quand tu parles de "racine de navigation" tu voulais dire "catégorie d'accueil". Alors ta solution Portlet Redirection d'Accueil est parfaite.

Pour ce qui est de la racine de navigation, en mettant en place une arborescence comme suit, il n'y a pas de problème.

  • Racine de navigation
    • Catégories de navigation du ws1
      • [...]
    • Catégories de navigation du ws2
      • [...]

PS : La right policy Domain<=> Workspace ferait un très bon plugin réutilisable à volonté :)

Jean-Marc Buatois - on 11/14/07 at 5:56 PM

Bien conçu ça ferait effectivement un excellent plugin... on va regarder ça

Olivier Jaquemet - on 12/20/07 at 11:10 AM

Le module en question est en ligne !

Multi Domain Plugin

Merci à Laurent, de Micropole Univers, pour cette très bonne contribution.

Fernando Mato Mira - on 6/22/10 at 9:40 AM

Bonjour,

Il me semble que pour être une solution complète, il manque la gestion des multiples "URL du site" pour que les liens dans les e-mails soient générés correctement, par exemple.

Merci

Fernando Mato Mira - on 8/9/10 at 2:30 PM

J'ai suivi les instructions, mais le domaine alternatif ne me redirige pas vers le portail du sous-site, mais sur le site général.

Merci.

Login   Home   fr en
JALIOS SA - SIREN 440 126 035