Fév
21
2019

Réécrire à la volé le code source d’une page avec apache


En voulant rendre accessible une application Web de l’extérieur en passant par un reverse proxy apache, je me suis aperçu que les liens vers les fichiers CSS et autres étaient en dure : appli.domaine-interne.local/css/fichier.css (par exemple). Or je voulais changer d’FQDN.

Après pas mal de recherche, j’ai trouvé un mod d’apache permettant de réécrire à la volée le contenu HTML. Ce mod se nomme mod_substitute.

https://httpd.apache.org/docs/2.4/fr/mod/mod_substitute.html

Après quelques tests, je n’ai pas réussi à l’utiliser. J’ai continué de chercher et je suis tombé sur une autre méthode permettant d’exécuter un script php pendant le traitement du mod_proxy.

Voici ce qu’il faut ajouter dans le virtualhost :

ExtFilterDefine proxiedcontentfilter mode=output cmd=”/usr/bin/php /var/www/html/sub.php”
RequestHeader unset Accept-Encoding
RequestHeader set Accept-Encoding identity
SetOutputFilter proxiedcontentfilter

Il faut ensuite créer le fichier php correspondant /var/www/html/sub.php

#!/usr/bin/php
<?php
$html = file_get_contents(‘php://stdin’);
$html = str_ireplace(‘http://appli.domaine-interne.local’, ‘https://appli.nouveaudomaine.fr’, $html);
file_put_contents(‘php://stdout’, $html);

Ici, le fichier php appelé par apache lors du traitement mod_proxy permettra de remplacer appli.domaine-interne.local par https://appli.nouveaudomaine.fr’.

Cette méthode est magique. À voir au niveau des performances, mais pour mon cas d’usage, il semblerait que ça tienne la route.

Assurez-vous d’avoir installé php au préalable et mod_proxy puis redémarrez votre serveur apache.

Articles similaires

Au sujet de l'auteur: Olivier Legras

Auteur de ce Blog, je partage quelques unes de mes notes que je juge utile à vous comme à moi. Je suis très heureux de voir que mon blog a de plus en plus d'affluence. Merci à vous!

Laissez un commentaire