Configurer Apache en Reverse-Proxy avec le module mod_proxy

En configurant un reverse-proxy comme couche de protection supplémentaire, vous améliorez la sécurité de votre application Web en minimisant le risque d’attaque. Le serveur HTTP Apache dispose de nombreux modules et extensions qui prennent en charge différentes fonctions de proxy. Ce guide explique comment mettre en place et configurer un reverse-proxy Apache pas à pas.

C’est quoi mod_proxy ?

Apache est un serveur Web open source aussi connu que répandu. Il est utilisé pour la mise à disposition de contenus Web sur Internet. On le retrouve sur de nombreux systèmes d’exploitation tels que Windows, Linux et macOS et il existe plusieurs plugins et modules d’extension.

Le module mod_proxy permet au serveur Apache d’agir comme un reverse-proxy, en transmettant les requêtes à un autre serveur et en renvoyant la réponse au client. Cette procédure trouve toute son utilité si vous souhaitez, par exemple, répartir la charge entre plusieurs serveurs Web. De quoi ainsi améliorer les performances ou mettre en place une architecture haute disponibilité.

Apache mod_proxy se compose de plusieurs modules avec leurs fonctionnalités propres. Voici quelques-uns des modules les plus importants :

  • mod_proxy : fournit la fonctionnalité principale du reverse-proxy et transmet les requêtes à un autre serveur ;
  • mod_proxy_http : fournit des fonctions de proxy pour les protocoles HTTP et HTTPS ;
  • mod_proxy_ftp : possède des fonctions proxy pour le protocole FTP ;
  • mod_proxy_connect : pour les connexions chiffrées SSL ;
  • mod_proxy_ajp : sert à rediriger les requêtes vers des serveurs d’applications compatibles AJP ;
  • mod_proxy_wstunnel : pour l’utilisation de sockets Web ;
  • mod_proxy_balancer : fonctions d’équilibrage de charge ;
  • mod_cache : implémente un filtre de mise en cache ;
  • mod_headers : modifie les lignes d’en-tête HTTP ;
  • mod_deflate : compresse les réponses HTTP.
Conseil

L’hébergement Linux par IONOS prend en charge un grand nombre de modules Apache qui permettent de configurer rapidement et efficacement votre propre reverse-proxy Apache. Profitez de performances évolutives, d’une protection DDOS et de fonctionnalités PHP de haut niveau.

Mise en place d’un reverse-proxy Apache étape par étape

Ce tutoriel implique que vous ayez déjà installé Apache sur votre système. À cet effet, vous trouverez des informations détaillées sur la manière de configurer un serveur Web Apache dans notre Digital Guide.

Étape 1 : mettre à jour la liste des paquets

Tout d’abord, vous devez mettre à jour la liste des paquets disponibles.

Tapez la commande suivante dans une fenêtre de terminal :

$ sudo aptitude update
shell

Mettez ensuite à jour les paquets installés sur votre système :

$ sudo aptitude upgrade -y
shell

Étape 2 : télécharger Build Essential

Ensuite, il faut installer le paquet Build Essential. Il s’agit d’un paquet d’outils et de bibliothèques nécessaires à la création et à la compilation d’applications sous Linux.

$ sudo aptitude install -y build-essential
shell

Étape 3 : installer les modules et dépendances

À présent, il faut télécharger et installer les modules et bibliothèques nécessaires pour le reverse-proxy Apache.

$ sudo aptitude install -y libapache2-mod-proxy-html libxml2-dev
shell

Étape 4 : activer les modules

Avant d’activer les extensions, vérifiez qu’elles ont été correctement installées. La commande suivante affiche la liste des modules disponibles :

$ a2enmod
shell
Exécution de a2enmod
Commande a2enmod dans le terminal

Lors de l’exécution de la commande a2enmod, le système demande quels modules vous souhaitez installer. Vous pouvez lister les extensions souhaitées dans une ligne unique :

$ proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
shell

Mais vous pouvez aussi activer chaque module séparément :

$ a2enmod proxy
$ a2enmod proxy_http
$ a2enmod proxy_ajp
$ a2enmod rewrite
$ a2enmod deflate
$ a2enmod headers
$ a2enmod proxy_balancer
$ a2enmod proxy_connect
$ a2enmod proxy_html
shell

Certains modules sont activés par défaut. Avec a2enmod, vous vous assurez qu’ils sont bien activés.

Étape 5 : modifier la configuration par défaut

La mise en œuvre les fonctions de proxy du serveur Apache passe par la modification du fichier de configuration standard 000-default.conf dans le répertoire /etc/apache2/sites-enabled.

$ nano /etc/apache2/sites-enabled/000-default.conf
shell

Cela se fait par la mise en place d’un hôte proxy virtuel avec les extensions mod_virtualhost et mod_proxy. Vous pouvez adapter le code à votre convenance.

    <VirtualHost *:*>
        ProxyPreserveHost On
        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0:8080/
        ProxyPassReverse / http://0.0.0.0:8080/
        ServerName localhost
    </VirtualHost>
shell

Appuyer sur Ctrl + X et Y pour enregistrer les modifications et fermer l’éditeur de texte.

Étape 6 : configurer la répartition de charge

Si vous exploitez plusieurs serveurs backend, mieux vaut répartir la charge au moyen du load-balancing.

Vous pouvez pour cela vous inspirer du code suivant comme modèle pour l’insérer dans le fichier de configuration standard :

<Proxy balancer://mycluster>
        # Define back-end servers:
        # Server 1
        BalancerMember http://0.0.0.0:8080/
        # Server 2
        BalancerMember http://0.0.0.0:8081/
    </Proxy>
    <VirtualHost *:*>
        # Apply VH settings as desired
        # However, configure ProxyPass argument to
        # use "mycluster" to balance the load
        ProxyPass / balancer://mycluster
    </VirtualHost>
shell

Étape 7 : configurer le SSL

Si vous souhaitez utiliser Apache SSL pour les connexions chiffrées et les certificats, vous devez activer un deuxième hôte virtuel.

Listen 443
    NameVirtualHost *:443
    <VirtualHost *:443>
        SSLEngine On
        # Set the path to SSL certificate
        # Usage: SSLCertificateFile /path/to/cert.pem
        SSLCertificateFile /etc/apache2/ssl/file.pem
        # Servers to proxy the connection, or;
        # List of application servers:
        # Usage:
        # ProxyPass / http://[IP Addr.]:[port]/
        # ProxyPassReverse / http://[IP Addr.]:[port]/
        # Example:
        ProxyPass / http://0.0.0.0:8080/
        ProxyPassReverse / http://0.0.0.0:8080/
        # Or, balance the load:
        # ProxyPass / balancer://balancer_cluster_name
    </VirtualHost>
shell

Étape 8 : redémarrer Apache

Une fois la configuration terminée, redémarrez le serveur Web Apache pour que les modifications soient prises en compte.

$ service apache2 restart
shell

À présent, le reverse-proxy Apache devrait transmettre les requêtes à vos serveurs backend.

Conseil

Découvrez le serveur managed par IONOS : une solution simple, évolutive et sûre pour la mise en place d’un reverse-proxy Apache. Avec son taux de disponibilité et sa flexibilité élevées et un service client professionnel, concentrez-vous sur votre activité principale pendant que IONOS gère les performances et la sécurité de votre application.