Proxyfier les requêtes non prise en charge

Author:Thomas Bonfort
Contact:tbonfort at terriscope.fr

Note

Cette page est un travail en cours

MapCache a la possibilité de transférer une requête entrante à laquelle il ne peut pas répondre nativement (en renvoyant une tuile ou en en fusionnant plusieurs)

Cette configuration permet à MapCache d’être positionné de manière transparente devant un serveur OGC pré-existant afin d’accélérer les requêtes tuilées ou non pour un nombre choisi de grilles, tout en maintenant la compatibilité du service pour d’autre types de requêtes (WFS, SRS non pris en charge…)

Note

La proxyfication des requêtes se configure au sein du service WMS MapCache, ce qui peut sembler sémantiquement étrange.

La configuration de ce comportement s’active par une succession d’instructions au sein de l’élément <forwarding_rule> du <service> wms. Les règles sont testées dans l’ordre d’apparition dans le fichier mapcache.xml, et la première qui correspond est utilisée. Si aucune règle n’est indiquée, ou si aucune règle ne correspond à la requête entrante, une erreur est renvoyée à l’utilisateur.

<service type="wms" enabled="true">
   <forwarding_rule name="first rule">
      <!-- rule tests -->
      <!-- proxy destination -->
   </forwarding_rule>
   <forwarding_rule name="second rule">
      <!-- rule tests -->
      <!-- proxy destination -->
   </forwarding_rule>
</service>

Une règle de redirection (<forwarding_rule>) est faite d’un ensemble de règles de vérification et d’un bloc <http> indiquant vers où la requête doit être redirigée.

Filtrage selon des paramètres

Les règles s’appliquent aux paramètres clé-valeur qui sont transmis dans la requête entrante, et sont ajoutés avec le mot-clé <param>:

<forwarding_rule name="first rule">
  <param name="SERVICE" type="values">WFS,WCS</param>
  <!-- ... !>
<forwarding_rule>

L’attribut « type » est le même que ce qui est autorisé pour dimensions, c’est-à-dire que les valeurs autorisées sont « values », « regex » et « intervals ». Dans l’exemple précédent, la règle correspondrait à n’importe quelle requête ayant ..&SERVICE=WFS&… ou …&SERVICE=WCS&… dans ses paramètres.

<forwarding_rule name="first rule">
  <param name="SERVICE" type="values">WFS,WCS</param>
  <param name="LAYERS" type="values">somelayername</param>
  <!-- ... !>
<forwarding_rule>

Des règles multiples peuvent être utilisées si le filtrage a été fait sur de multiples paramètres. Dans l’exemple précédent, la règle correspondrait à des requêtes WFS ou WCS sur la couche « somelayername » uniquement.

Une règle de redirection qui n’a pas de <param> correspondra à n’importe qu’elle requête qui ne peut être traitée directement par MapCache à partir de son cache, et peut être utilisée pour transférer toutes les requêtes non prises en charge vers un serveur OGC complet qui fournira la réponse ad hoc.

Destination de la redirection

Une fois qu’une <forwarding_rule> correspond, son élément <http> sera utilisé pour transférer la requête à la destination indiquée.

<forwarding_rule name="first rule">
  <!-- ... !>
  <http>
     <url>http://wmsserver/ogc.cgi?</url>
  </http>
<forwarding_rule>

Voir aussi

HTTP Requests