Apache en frontal Weblogic (Mod_WL)

L’utilisation de Weblogic oblige à réserver un port http et un port https par Managed Server. Cela pose un problème si l’on souhaite utiliser plusieurs managed servers pour créer un seul site web global avec plusieurs applications.
De plus dans le cadre de la sécurisation des serveurs J2EE, il est recommandé de mettre un frontal Http devant le serveur d’application afin de protéger et contrôler les requêtes. Dans le cadre de la mise en production de version de produits, le serveur apache peut permettre une bascule rapide d’une version à une autre (diminution du temps d’indisponibilité). Apache dispose également de modules performants de compression à la volée qui permettent de réduire les volumes de données à transiter, et cela selon les types mimes (régulièrement sont compressés les fichiers de type xml, js, html, jsp .. etc.. ).
Voyons comment utiliser cette option.

Comment choisir son Mod_Wl<x>.so ?

Dans les répertoires d’installation Weblogic, l’arboresence suivante est installée :

WL_HOME/weblogic90/server/plugin/<os>/<cpu>
  • les <os> dispos sont solaris, linux, win et hpux11.
    les <cpu> varient selon les OS

les différents modules disponibles sont, selon SSL ou non

  • pour apache 1.x : mod_wl.so et mod_wl128.so
    pour apache 2.0 : mod_wl_20.so et mod_wl128_20.so
    pour apache 2.2 : mod_wl_22.so et mod_wl128_22.so

A l’heure actuelle, il est fort probable que vous installiez, mod_wl128_22.so. Apache 2.2 est la dernière version et l’encryption 128 est le choix courant sur ssl.
Le package Apache 2.2 sur Linux est généralement compilé avec les options nécessaires au chargement des modules. Si vous souhaitez recompiler votre version d’Apache n’oubliez pas d’utiliser les options suivantes à minima : –enable-module=so et –enable-rule=SHARED_CORE.

Comment utiliser son Mod_WL<x>.so ?

pour le charger dans Apache 1.x, ajouter les 2 lignes suivantes à httpd.conf :
LoadModule weblogic_module libexecmod_wl.so
AddModule mod_weblogic.c

pour le charger dans Apache 2.2 et 2.0, ajouter à httpd.conf la ligne :

LoadModule weblogic_module modulesmod_wl_20.so 

Configurer son Mod_WL<x>.so ?

Le module Weblogic se base sur une syntaxe proche du reverse Proxy. Il s’agit principalement de faire correspondre des URI Apache à des URI weblogic avec ou sans suppression à la volée d’une partie du Context Path.

#definition du serveur Weblogic (non cluster) <IfModule mod_weblogic.c>    WebLogicHost myweblogic.server.com
   WebLogicPort 7001
</ifModule>
#repertoire apache weblogic
<Location /weblogic>
  #envoi vers le gestionnaire weblogic
  SetHandler weblogic-handler
  #retrait de cette partie de l'url dans la requete vers weblogic
  PathTrim /weblogic
</Location>

Il est aussi possible de proxyfier sur  mime-types (exemple )

<IfModule mod_weblogic.c> WebLogicHost myweblogic.server.com   WebLogicPort 7001   MatchExpression *.jsp </IfModule> 

L’ensemble des éléments abordés peut être retrouvé sur http://download.oracle.com/docs/cd/E13222_01/wls/docs90/plugins/apache.html

Astuces et Détails

Weblogic doit être paramétré pour accepter ce genre de configuration.
Il faut que les managed servers soient démarrés avec la java option :

-Dweblogic.http.enableRemoteUserHeader=true

sinon il ne sera pas possible de se logguer via apache.
Il faut également que les options d’accès proxy soient cochées dans la console d’administration sur Weblogic :

  1. case Vous devrez peut-être procéder au redémarrage. Module d’extension WebLogic activé dans la page de configuration avancée du managed serveur
  2. et en cas d’utilisation de SSL, la case Vous devrez peut-être procéder au redémarrage. Proxy pour les certificats client activé doit également être cochée.

Pour finir, le module Proxy_pass d’apache peut parfois s’avérer plus simple à utiliser que le mod_wl dans les situations de double controle sur certificats.