Magazine High tech

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

Publié le 21 février 2019 par Crocodanser

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.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Crocodanser 15 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte