Module Apache

Nous fournissons un module Apache, qui expose redirection.io directement dans votre configuration Apache. L'utilisation de ce module est l'une des méthodes recommandées pour intégrer redirection.io dans votre infrastructure.

Nous fournissons également un module nginx. Si votre infrastructure utilise nginx, veuillez utiliser ce module.

Lorsqu'une requête HTTP(s) entrante arrive, elle est traitée par le serveur web Apache, dans lequel le module natif de redirection.io s'intègre, de manière très rapide et performante :

une requête entrante est interceptée par le module Apache de redirection.io

Veuillez noter que le module Apache nécessite qu'une instance de l'agent redirection.io soit disponible sur votre infrastructure, veuillez donc configurer l'agent redirection.io en premier.

Installation du module

Distributions Debian et basées sur APT

Si vous utilisez une distribution Linux Debian ou basée sur APT et que vous souhaitez installer libapache2-mod-redirectionio, veuillez utiliser les commandes suivantes :

  1. Sélectionnez votre distribution

    Pour les prochaines étapes, veuillez utiliser les bonnes valeurs, en fonction de la version de votre distribution :
    Debian 12 (Bookworm)
    URL de la source du dépôt: bookworm main
    Debian 11 (Bullseye)
    URL de la source du dépôt: bullseye main
    Debian 10 (Buster)
    URL de la source du dépôt: buster main
    Ubuntu 24.04 LTS (Noble Numbat)
    URL de la source du dépôt: noble main
    Ubuntu 22.04 LTS (Jammy Jellyfish)
    URL de la source du dépôt: jammy main
    Ubuntu 20.04 LTS (Focal Fossa)
    URL de la source du dépôt: focal main
  2. Installez le paquet apt-transport-https :

    sudo apt-get install apt-transport-https
    
  3. Importez notre clé de dépôt apt :

    sudo mkdir -p /etc/apt/keyrings
    wget -qO- https://packages.redirection.io/gpg.key | sudo tee /etc/apt/keyrings/redirectionio-archive-keyring.asc
    
  4. Ajoutez l'URL de notre dépôt Debian :

    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/redirectionio-archive-keyring.asc] https://packages.redirection.io/deb/stable/2 bookworm main" | sudo tee -a /etc/apt/sources.list.d/packages_redirection_io_deb.list > /dev/null
  5. Mettez à jour le cache apt et installez le module Apache de redirection.io :

    sudo apt update && sudo apt install libapache2-mod-redirectionio
    
  6. Une fois le module installé, redémarrez le service apache2, par exemple :

    sudo systemctl restart apache2
    

Vous avez terminé ! redirection.io est installé et fonctionne. Vous pouvez poursuivre avec la configuration Apache de redirection.io et devriez voir des logs en quelques minutes 🎉

Distributions Red Hat et basées sur RPM

Notre module Apache est disponible pour Centos 7, Centos 8, RHEL 7, RHEL 8 jusqu'à la version 2.8.0. À partir de la version 2.9.0 et ultérieures, seul Centos 9 stream est pris en charge. Cependant, vous pouvez toujours compiler le module Apache redirection.io pour votre distribution

Si vous utilisez une distribution Linux de type Red Hat/CentOS et que vous souhaitez installer libapache2-mod-redirectionio, veuillez utiliser les commandes suivantes :

  1. Importez la clé de signature :

    sudo rpm --import https://packages.redirection.io/gpg.key
    
  2. Ajoutez notre dépôt RPM :

    sudo yum-config-manager --add-repo https://packages.redirection.io/rpm/stable/2/centos_9
  3. Installez le module Apache de redirection.io :

    sudo yum install libapache2-mod-redirectionio
  4. Une fois le module installé, redémarrez le service apache2, par exemple :

    sudo systemctl restart apache2
    

Vous avez terminé ! redirection.io est installé et fonctionne. Vous pouvez poursuivre avec la configuration Apache de redirection.io et devriez voir des logs en quelques minutes 🎉

Rôle Ansible

Un rôle Ansible redirectionio.apache_module est disponible. Vous pouvez l'installer en utilisant Ansible Galaxy :

ansible-galaxy install redirectionio.apache_module

En gros, ce rôle installe le module Apache redirection.io et s'assure que vous utilisez les bons emplacements de dépôt, en fonction du système d'exploitation de votre hôte. Il prend en charge les distributions Linux basées sur Debian et RHEL.

Configuration

L'activation de redirection.io est aussi simple que de déclarer la clé de projet dans le Virtualhost ou le nœud de configuration où vous souhaitez activer redirection.io.

Vous pouvez trouver la clé de projet dans l'écran "instances" du gestionnaire (cliquez sur le bouton "Configuration sur votre site web" > "Configuration sur votre infrastructure").

Par exemple, cela peut être dans un Virtualhost :

<VirtualHost *:8080>
  DocumentRoot /path/to/root
  ServerName example.org
    
  # ...

  RedirectionioProjectKey "SOME_PROJECT_KEY_HERE"
  
  # ...
</VirtualHost>

Ou même dans un Emplacement (Location) :

<VirtualHost *:8080>
  DocumentRoot /path/to/root
  ServerName example.org
    
  # ...

  <LocationMatch "^/some-path">
    RedirectionioProjectKey "SOME_PROJECT_KEY_HERE"
  </LocationMatch>
  
  # ...
</VirtualHost>

La RedirectionioProjectKey peut être entre guillemets ou non (par exemple, SOME_PROJECT_KEY_HERE ou "SOME_PROJECT_KEY_HERE").

Directives de configuration du module

Le libapache2-mod-redirectionio active plusieurs directives de configuration, qui peuvent être utilisées partout où la RedirectionioProjectKey est utilisée :

Redirectionio

  • Syntaxe : Redirectionio "on" | "off"
  • Valeur par défaut : Redirectionio "off"
  • Contexte : VirtualHost, Location, LocationMatch

Cette directive active ou désactive redirection.io pour les requêtes correspondant au contexte actuel. Par défaut, redirection.io est désactivé, mais est automatiquement activé lorsque la directive RedirectionioProjectKey est définie dans un nœud de la configuration.

L'utilisation de Redirectionio "off" peut donc être utile pour désactiver redirection.io dans un emplacement particulier :

<VirtualHost *:8080>
  DocumentRoot /path/to/root
  ServerName example.org
  RedirectionioProjectKey "SOME_PROJECT_KEY_HERE"
  
  # ...
  
  <LocationMatch "^/some-path">
    Redirectionio "off"
  </LocationMatch>
  
  # ...
</VirtualHost>

RedirectionioProjectKey

  • Syntaxe : RedirectionioProjectKey "some_key"
  • Valeur par défaut : aucune
  • Contexte : VirtualHost, Location, LocationMatch

Définit la clé de projet redirection.io à utiliser pour les requêtes correspondant au contexte actuel. Lorsqu'elle est définie, cette directive active automatiquement la directive Redirectionio.

RedirectionioLogs

  • Syntaxe : RedirectionioLogs "on" | "off"
  • Valeur par défaut : RedirectionioLogs "on"
  • Contexte : VirtualHost, Location, LocationMatch

Cette directive active ou désactive la collecte des logs pour le contexte correspondant actuel (cependant, veuillez noter que les logs ne seront envoyés que si les directives Redirectionio et RedirectionioLogs sont toutes deux définies sur on. En d'autres termes, définir RedirectionioLogs sur on avec Redirectionio sur off ne collectera aucun log).

RedirectionioPass

  • Syntaxe : RedirectionioPass "tcp://ip:port" | "unix:///path"
  • Valeur par défaut : RedirectionioPass "tcp://127.0.0.1:10301"
  • Contexte : VirtualHost, Location, LocationMatch

Cette directive spécifie l'emplacement du backend redirectionio-agent que le module Apache doit utiliser pour les requêtes correspondantes. Dans une configuration traditionnelle, l'agent est simplement disponible à 127.0.0.1:10301. Si vous exposez l'agent via un fichier, la valeur de la directive RedirectionioPass peut, par exemple, être sous la forme unix:///var/run/redirectionio.sock.

À partir de la version 2.2.0, cette directive permet également de définir des options de gestion du pool de connexions :

RedirectionioPass "tcp://127.0.0.1:10301" min_conns=1 keep_conns=10 max_conns=100 timeout=100

Tous les paramètres min_conns, keep_conns, max_conns et timeout sont facultatifs :

  • min_conns (par défaut 1) : c'est le nombre minimal de connexions TCP qui sont établies en permanence entre le module Apache2 et l'agent redirection.io. Si ces connexions n'existent pas, elles sont créées, même si aucune requête HTTP n'est traitée par le serveur Apache2.
  • max_conns (par défaut 100) : c'est le nombre maximal de connexions TCP qui peuvent être établies entre le module Apache2 et l'agent redirection.io à un moment donné. Si toutes les connexions sont actuellement utilisées, le module attendra la durée timeout, puis enregistrera une erreur et laissera la requête passer sans la traiter.
  • keep_conns (par défaut 10) : c'est le nombre minimal de connexions TCP à maintenir actives une fois qu'elles ont été créées.
  • timeout (par défaut 100) : c'est la durée, en millisecondes, pendant laquelle le module Apache2 attendra une réponse de l'agent. L'agent redirection.io est très performant et, même avec des centaines de milliers de règles, devrait toujours envoyer une réponse beaucoup plus rapidement que cette valeur de timeout (généralement en moins de 1 ms), mais ce paramètre garantit que, même dans des contextes de très forte charge, l'appel à l'agent ne bloquera pas la requête trop longtemps.

Par exemple, avec min_conns=1 keep_conns=10 max_conns=100 timeout=50 :

  • 1 connexion est établie entre Apache2 et l'agent au démarrage d'Apache2 ;
  • Apache2 créera jusqu'à 100 connexions à l'agent (bien sûr, il réutilise les connexions disponibles) ;
  • si de nombreuses connexions ont été créées et ne sont plus utiles, elles seront libérées, mais Apache2 gardera 10 connexions actives ;
  • Apache2 attendra au maximum 50 millisecondes pour une réponse de l'agent redirection.io.

RedirectionioRuleIdsHeader

  • Syntaxe : RedirectionioRuleIdsHeader "on" | "off"
  • Valeur par défaut : RedirectionioRuleIdsHeader "off"
  • Contexte : VirtualHost, Location, LocationMatch
  • Disponible depuis : 2.0.0

Si ce paramètre est activé, un en-tête de réponse nommé X-RedirectionIo-RuleIds sera ajouté à la réponse. Sa valeur contiendra la liste des identifiants des règles redirection.io appliquées à cette réponse, séparés par le caractère ;.

RedirectionioScheme

  • Syntaxe : RedirectionioScheme "http" | "https"
  • Valeur par défaut : aucune
  • Contexte : VirtualHost, Location, LocationMatch
  • Disponible depuis : 2.0.0

Cette directive permet de forcer le schéma à utiliser lors de la correspondance de la requête. Ceci est utile si vous avez défini des règles utilisant un déclencheur d'URL avec une valeur d'URL absolue (contenant un schéma, un nom de domaine, etc.), mais que vous souhaitez utiliser les mêmes règles dans un VirtualHost avec un autre schéma.

Imaginez, par exemple, un VirtualHost écoutant uniquement le trafic https, utilisant un projet dans lequel les règles sont définies à l'aide du schéma http:// : les URL ne correspondraient jamais, car aucune règle n'utilise le schéma https://. Dans ce cas, définir la valeur RedirectionioScheme sur http forcera le module à effectuer la correspondance avec ce schéma, et non le schéma réel de la requête.

RedirectionioSetHeader

  • Syntaxe : RedirectionioSetHeader X-Custom-Header-Name HeaderValue;
  • Valeur par défaut : aucune
  • Contexte : VirtualHost, Location, LocationMatch
  • Disponible depuis : 2.2.0

Cette directive permet de transmettre la requête au module redirection.io en ajoutant un en-tête de requête rempli d'une valeur donnée. La valeur passée à l'en-tête peut être une variable Apache, par exemple :

RedirectionioSetHeader X-GeoIP-Country-Code $(GEOIP_COUNTRY_CODE);

Cela peut être utile pour transmettre des variables du contexte nginx à l'agent redirection.io, qui peuvent être utilisées dans les règles de redirection à l'aide du déclencheur d'en-tête de requête.

RedirectionioTrustedProxies

  • Syntaxe : RedirectionioTrustedProxies 127.0.0.1,172.18.0.0/24;
  • Valeur par défaut : aucune
  • Contexte : VirtualHost, Location, LocationMatch
  • Disponible depuis : 2.3.0

Cette directive est utilisée par le module pour restreindre les proxys considérés comme fiables avant d'évaluer les en-têtes X-Forwarded-*. Ceci est particulièrement utile lors de l'utilisation du déclencheur d'adresse IP, afin de s'assurer que l'adresse IP évaluée est valide et n'a pas été falsifiée.

La valeur à utiliser pour cette directive est une liste d'adresses IP de tous les proxys qui doivent être considérés comme fiables, séparées par des virgules (il peut s'agir d'une notation CIDR pour les sous-réseaux).

Utilisation du module Apache avec une installation Apache2 non-standard

Notre module Apache est l'une des méthodes recommandées pour intégrer redirection.io dans les piles Web. Nous distribuons notre module Apache pour de nombreuses distributions, ce qui devrait couvrir la plupart des cas de production.

Cependant, il peut arriver que votre fournisseur d'hébergement ou votre solution de provisioning installe une version personnalisée d'Apache, dans des chemins non-standards ou avec des dépendances incompatibles.

Cette section vous guidera à travers les étapes pour faire fonctionner notre module Apache avec votre installation Apache2, quelle que soit sa configuration.

Si vous maîtrisez Docker, ce processus de compilation est également disponible sous forme de Dockerfile sur notre compte Github.

Télécharger et compiler la bibliothèque libredirectionio

La bibliothèque libredirectionio est une bibliothèque Rust qui traite les redirections et le filtrage à partir des règles créées à l'aide de redirection.io. Cette bibliothèque est utilisée dans nos différents proxys, et spécifiquement dans le module Apache2.

  1. Installez les outils de compilation Rust :

    # Distribution basée sur Debian
    apt install autoconf build-essential curl wget unzip
    curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain 1.76.0 -y
    
    apt install cargo wget unzip
    
    # Distribution basée sur RedHat
    yum install -y epel-release yum-utils curl
    yum -y groupinstall 'Development Tools'
    curl https://sh.rustup.rs -sSf | sh
    
  2. Obtenez les sources de la bibliothèque libredirectionio :

    cd /tmp
    wget -O libredirectionio-master.zip https://github.com/redirectionio/libredirectionio/archive/master.zip
    unzip libredirectionio-master.zip
    cd libredirectionio-master
    
  3. Et compilez la bibliothèque :

    autoreconf -i && \
    ./configure && \
    make clean && \
    make && \
    make install
    

Si la compilation réussit (cela peut être long), vous devriez obtenir une bibliothèque statique target/release/libredirectionio.so.

Télécharger et compiler la source du module

Le module Apache de redirection.io est disponible en tant que projet Open Source sur notre compte github.

  1. Tout d'abord, installez quelques outils et utilitaires de compilation :

    # Distribution basée sur Debian
    apt install gawk
    
    # Distribution basée sur RedHat
    yum install gcc gawk wget unzip
    
  2. Assurez-vous que apxs est installé sur votre système. apxs (également connu sous le nom d'"APache eXtenSion tool") est un outil pour construire et installer des modules d'extension pour le serveur Apache :

    which apxs
    

    Si cette commande ne renvoie pas le chemin complet de apxs, vous devez l'installer. Cela dépend de votre distribution, mais en gros, vous pouvez obtenir apxs en utilisant l'une des commandes suivantes :

    # Distribution basée sur Debian
    apt install apache2-dev
    
    # Distribution basée sur RedHat
    yum install httpd-devel
    
    # Amazon Linux
    yum install httpd24-devel
    
  3. Téléchargez le module :

    cd /tmp
    wget -O libapache2-mod-redirectionio-master.zip https://github.com/redirectionio/libapache2-mod-redirectionio/archive/master.zip
    
  4. Ensuite, compilez le module :

    unzip libapache2-mod-redirectionio-master.zip
    cd libapache2-mod-redirectionio-master
    autoreconf -i
    ./configure
    make clean
    make
    sudo make install
    

Installer le module dans le bon chemin

L'installation du module devrait être assez simple dans la plupart des cas :

make install

Si cela fonctionne, vous avez terminé, félicitations ! Cependant, cette étape peut échouer si votre installation Apache2 n'utilise pas les répertoires Apache standard de votre distribution. Dans ce cas, vous devez copier le module dans le dossier approprié.

  1. Tout d'abord, trouvez le dossier des modules. Cela peut être fait en inspectant la configuration Apache :

    /path/to/your/apache -V | grep SERVER_CONFIG_FILE
    # devrait afficher quelque chose comme : SERVER_CONFIG_FILE="/etc/apache-custom/httpd.conf"
    # ce qui signifie que le fichier de configuration est "/etc/apache-custom/httpd.conf"
    

    Utilisez cat pour afficher le contenu de ce fichier : vous devriez remarquer plusieurs directives LoadModule, par exemple LoadModule auth_basic_module lib/apache-custom/mod_auth_basic.so.

    Cela signifie que le chemin des modules est dans /etc/apache-custom/lib/apache-custom/. Hourra \o/

  2. Déplacez le module dans ce dossier :

    # changez les permissions du module
    chmod 644 ./src/mod_redirectionio.so
    
    # puis, copiez-le au bon endroit
    # (bien sûr, utilisez le chemin que vous avez trouvé ci-dessus)
    sudo mv ./src/mod_redirectionio.so /etc/apache-custom/lib/apache-custom/
    
    
  3. Chargez le module dans Apache - pour cela, ajoutez une directive LoadModule dans httpd.conf, quelque chose comme :

    LoadModule redirectionio_module lib/apache-custom/mod_redirectionio.so
    

    Vous pouvez également ajouter cette ligne dans un fichier séparé, pour garder une trace de vos propres modifications. La plupart du temps, le fichier de configuration principal d'Apache2 inclut d'autres fichiers (par exemple, IncludeOptional /etc/apache-custom/conf.d/*.conf) - alors n'hésitez pas à ajouter le vôtre !

  4. Redémarrez Apache, et vous avez terminé !

    sudo systemctl restart apache2.service
    

Vous pouvez vérifier que le module fonctionne pleinement en complétant ses étapes de configuration dans le VirtualHost.

Cette page a été mise à jour le 30 juin 2025
Vous ne trouvez pas votre réponse ?