Guide des technologies

Réduire le trafic avec mod_deflate sur Lighttpd 1.4 (Debian Etch)

7 min read Serveur Mis à jour 21 Oct 2025
Réduire le trafic avec mod_deflate sur Lighttpd 1.4
Réduire le trafic avec mod_deflate sur Lighttpd 1.4

Ce guide explique comment compiler et installer une version patchée de Lighttpd 1.4.13 avec le module mod_deflate sur Debian Etch, puis comment le configurer pour compresser les réponses HTTP et réduire le trafic. Il décrit les étapes de préparation, la compilation, la configuration, la vérification et le dépannage. Suivez les vérifications et la checklist avant et après le déploiement.

Important

Cette méthode remplace le paquet lighttpd existant par une version construite depuis les sources. Sauvegardez vos configurations et testez sur un serveur non productif avant toute mise en production.

Auteur: Falko Timme
Version: 1.0

Objectif et variantes de recherche

But principal: installer et configurer mod_deflate pour compresser les réponses HTTP sur Lighttpd 1.4 (Debian Etch).
Requêtes apparentées: “lighttpd mod_deflate Debian”, “activer compression gzip lighttpd”, “compresser PHP lighttpd 1.4”, “patch mod_deflate lighttpd 1.4.13”.

1 Préambule

Ce tutoriel montre comment installer mod_deflate sur un serveur Lighttpd 1.4 livré avec Debian Etch. Lighttpd 1.5 intègre mod_deflate nativement ; 1.4 utilise mod_compress mais celui-ci ne compresse que les fichiers statiques. mod_deflate peut compresser des fichiers statiques et dynamiques (ex. PHP). La version fournie par Debian Etch est 1.4.13 : nous allons donc appliquer un patch et reconstruire le paquet .deb.

Compression et performances

La compression réduit le trafic réseau et accélère les temps de chargement côté client. Elle augmente légèrement la charge CPU serveur pendant la compression, mais la réduction du temps de transfert compense souvent ce coût, surtout sur les connexions lentes.

Compatibilité

Le protocole HTTP prévoit une négociation des encodages (Accept-Encoding). Si le navigateur ne supporte pas la compression, le serveur retransmet les réponses non compressées.

Remarque

Il existe plusieurs façons d’activer la compression (proxy reverse, CDN, configuration du back-end). Cette méthode est une approche serveur-side directement sur Lighttpd 1.4.13.

2 Vérifier l’installation actuelle de Lighttpd

Si Lighttpd est déjà installé, vérifiez la version et les fonctionnalités :

lighttpd -V

Exemple de sortie attendue (doit afficher 1.4.13) :

server1:~# lighttpd -V  
lighttpd-1.4.13 (ssl) - a light and fast webserver  
Build-Date: Jun  1 2007 18:19:33  
  
Event Handlers:  

        + select (generic)  
        + poll (Unix)  
        + rt-signals (Linux 2.4+)  
        + epoll (Linux 2.6)  
        - /dev/poll (Solaris)  
        - kqueue (FreeBSD)  
  
Network handler:  

        + sendfile  
  
Features:  

        + IPv6 support  
        + zlib support  
        + bzip2 support  
        + crypt support  
        + SSL Support  
        + PCRE support  
        + mySQL support  
        + LDAP support  
        + memcached support  
        - FAM support  
        + LUA support  
        + xml support  
        + SQLite support  
        + GDBM support  
  
server1:~#

Si Lighttpd n’est pas installé, vous suivrez les mêmes étapes de compilation et installation ci-dessous.

3 Construire un paquet Lighttpd avec mod_deflate

Étapes principales:

  1. Installer les outils de compilation.
  2. Récupérer les sources Debian de lighttpd.
  3. Appliquer le patch mod_deflate aux sources 1.4.13.
  4. Résoudre les dépendances de build et lancer dpkg-buildpackage.
  5. Installer le .deb généré et copier mod_deflate.so dans le répertoire des modules.

Commandes (extraits clés) :

apt-get install build-essential
cd /usr/src  
apt-get source lighttpd

Vérifiez le répertoire extrait (ex. lighttpd-1.4.13) :

ls -l

Télécharger et appliquer le patch mod_deflate depuis la page du projet :

wget http://trac.lighttpd.net/trac/attachment/wiki/Mod_Deflate/lighttpd-1.4.13.mod_deflate.jz.patch?format=raw  
mv lighttpd-1.4.13.mod_deflate.jz.patch?format=raw lighttpd-1.4.13.mod_deflate.jz.patch  
cd lighttpd-1.4.13  
patch -p1 < ../lighttpd-1.4.13.mod_deflate.jz.patch

Si le patch s’applique sans erreur, lancez la construction :

dpkg-buildpackage

Si dpkg-buildpackage signale des dépendances manquantes, installez-les (exemple) :

apt-get install debhelper cdbs libssl-dev zlib1g-dev libbz2-dev libattr1-dev libpcre3-dev libmysqlclient15-dev libldap2-dev libfcgi-dev libgdbm-dev libmemcache-dev liblua5.1-0-dev dpatch patchutils pkg-config uuid-dev libsqlite3-dev libxml2-dev

Relancez :

dpkg-buildpackage

Remarques utiles

  • Le patch pour mod_deflate sur 1.4.x requiert que le build inclue le support bzip2. Debian Etch fournit bzip2 par défaut pour lighttpd, donc aucune action supplémentaire n’est généralement nécessaire.
  • La compilation peut générer des warnings sur les signatures : ils sont souvent sans conséquence pour ce cas de figure.

Après une compilation réussie, vous trouverez un paquet .deb dans /usr/src. Installez-le :

dpkg -i lighttpd_1.4.13-4etch1_i386.deb

Copiez ensuite mod_deflate.so dans le dossier des modules de Lighttpd :

cp /usr/src/lighttpd-1.4.13/debian/tmp/usr/lib/lighttpd/mod_deflate.so /usr/lib/lighttpd

Vérifiez la nouvelle build :

lighttpd -V

Vous devriez voir une Build-Date récente correspondant à la compilation.

4 Configurer Lighttpd pour activer mod_deflate

Fichier de configuration principal : /etc/lighttpd/lighttpd.conf

Ouvrez le fichier et ajoutez “mod_deflate” à la liste server.modules. Si mod_rewrite est utilisé, assurez-vous que mod_deflate apparaisse après mod_rewrite.

vi /etc/lighttpd/lighttpd.conf

| [...] server.modules = ( "mod_access", "mod_alias", "mod_accesslog", "mod_fastcgi", # "mod_rewrite", "mod_deflate", # "mod_redirect", # "mod_status", # "mod_evhost", # "mod_compress", # "mod_usertrack", # "mod_rrdtool", # "mod_webdav", # "mod_expire", # "mod_flv_streaming", # "mod_evasive" ) [...] |

Ensuite, ajoutez la configuration de mod_deflate (placez-la à la fin du fichier si vous le souhaitez) :

| [...] deflate.enabled = "enable" deflate.compression-level = 9 deflate.mem-level = 9 deflate.window-size = 15 # deflate.bzip2 only in patch for 1.4.x deflate.bzip2 = "enable" # deflate.allowed_encodings only in 1.5.x #deflate.allowed_encodings = ( "bzip2", "gzip", "deflate" ) deflate.min-compress-size = 200 #deflate.sync-flush = "enable" deflate.output-buffer-size = 4096 deflate.work-block-size = 512 deflate.mimetypes = ("text/html", "text/plain", "text/css", "text/javascript", "text/xml") #deflate.debug = "enable" |

Redémarrez Lighttpd :

/etc/init.d/lighttpd restart

Le service doit redémarrer sans erreur.

5 Vérification et tests

Accédez à des fichiers .html, .php, .css, .js depuis un navigateur. Si vous rencontrez des pages vides, réduisez deflate.output-buffer-size à 2048 ou 1024, puis redémarrez Lighttpd.

Activer le mode debug pour vérifier la compression :

  • Décommentez deflate.debug = “enable” dans lighttpd.conf.
  • Redémarrez le service.
  • Surveillez le log d’erreurs :
tail -f /var/log/lighttpd/error.log

Lorsque mod_deflate compresse une ressource, vous verrez des lignes similaires :

[...]  
2007-08-08 18:40:33: (mod_deflate.c.919) in: 53875 out: 8446  
2007-08-08 18:40:33: (mod_deflate.c.1020) finished uri: /info.php , query:  
[...]

Ici, info.php (53875 octets) a été compressé à 8446 octets.

6 Dépannage courant

  • Problème : pages blanches après activation.
    Solution : baissez deflate.output-buffer-size (2048 ou 1024) et redémarrez.

  • Problème : aucun contenu compressé observé.
    Vérifiez que le client envoie l’en-tête Accept-Encoding: gzip, deflate et que deflate.enabled = “enable”.

  • Problème : erreurs lors du dpkg-buildpackage.
    Solution : installez toutes les dépendances de build listées par dpkg-checkbuilddeps.

  • Problème : builds signés ou warnings GPG.
    Souvent sans incidence pour l’usage local ; pour production, signez avec la clé adéquate ou ignorez la signature si vous contrôlez le package.

7 Alternatives et limites

Alternatives à mod_deflate sur Lighttpd 1.4.x :

  • Utiliser un reverse proxy (Nginx ou Varnish) qui compressera les réponses.
  • Mettre un CDN devant votre site pour fournir contenu compressé automatiquement.
  • Migrer vers Lighttpd 1.5+ ou une version plus récente qui intègre mod_deflate sans patch.

Quand mod_deflate ne convient pas :

  • Si la charge CPU serveur est déjà critique et que la compression logicielle augmenterait la latence d’application.
  • Si vous préférez déléguer la compression à un cache ou à un CDN pour centraliser l’optimisation.

8 Checklist d’implémentation (rôles)

Administrateur système

  • Sauvegarder /etc/lighttpd/lighttpd.conf et tout autre fichier de configuration.
  • Travailler sur une machine de test ou un hôte non productif.
  • Installer les dépendances de build et compiler le paquet.
  • Vérifier que mod_deflate.so est présent dans /usr/lib/lighttpd.

Développeur web

  • Vérifier que les ressources critiques (HTML, CSS, JS) sont correctement compressées.
  • Tester le comportement des applications dynamiques (pages PHP, APIs).
  • Valider l’absence de corruption de la sortie (pages incomplètes).

Opérations / QA

  • Contrôler les logs (/var/log/lighttpd/error.log) pour les messages mod_deflate.
  • Effectuer des tests de charge simples (mesurer temps de réponse avant/après).
  • Appliquer le rollback si des erreurs graves apparaissent.

9 Critères d’acceptation

  • Le serveur redémarre sans erreur et sert des pages compressées aux navigateurs qui le demandent.
  • Les pages statiques et dynamiques ciblées sont réduites en taille (vérification via log ou outils devtools).
  • Aucun comportement fonctionnel ne change côté application (vérification manuelle des pages et des formulaires).
  • Pas de pages blanches ou de corruption de contenu après ajustement des buffers si nécessaire.

10 Runbook de rollback rapide

  1. Restaurer le paquet lighttpd d’origine (si sauvegardé) ou réinstaller depuis les dépôts :
dpkg -i /chemin/vers/votre/lighttpd_orig.deb
  1. Restaurer le fichier /etc/lighttpd/lighttpd.conf depuis la sauvegarde.
  2. Redémarrer Lighttpd :
/etc/init.d/lighttpd restart
  1. Vérifier le service et logs.

11 Tests et cas d’acceptation

  • Tester avec curl pour vérifier l’en-tête de réponse :
curl -I -H "Accept-Encoding: gzip" https://votre-site/exemple.html

Rechercher Content-Encoding: gzip dans la réponse.

  • Mesurer taille et temps avec et sans compression via outils navigateur (onglet Network) ou curl -w.

12 Sécurité et confidentialité

  • La compression ne modifie pas le contenu côté serveur. Elle n’ajoute pas d’exposition directe aux données sensibles. Toutefois, soyez prudent si vous combinez compression et chiffrement dans des configurations atypiques : ne mélangez pas des transformations qui pourraient altérer la sécurité d’un flux chiffré sans compréhension complète.

  • Conformité GDPR: la compression n’affecte pas la protection des données personnelles. Assurez-vous que les logs contenant des données personnelles sont traités conformément aux politiques internes.

13 Mini-méthodologie d’audit post-déploiement

  1. Activer deflate.debug temporairement et vérifier logs.
  2. Exécuter tests de bout en bout (pages principales, formulaires, API).
  3. Comparer métriques de bande passante sur 24–72 h (avant/après).
  4. Reculer si augmentation anormale d’erreurs ou CPU.

14 Glossaire (une ligne)

  • mod_deflate : module qui compresse les réponses HTTP côté serveur avant envoi au client.

15 Liens utiles

Résumé

  • mod_deflate permet de compresser les réponses HTTP sur Lighttpd 1.4 en appliquant un patch et en reconstruisant le paquet.
  • Testez en environnement contrôlé, sauvegardez les configurations, et vérifiez via logs et outils HTTP.
  • En cas de problème, baissez les tailles de buffer et suivez la checklist de rollback.
Auteur
Édition

Matériaux similaires

Installer et utiliser Podman sur Debian 11
Conteneurs

Installer et utiliser Podman sur Debian 11

Guide pratique : apt-pinning sur Debian
Administration système

Guide pratique : apt-pinning sur Debian

OptiScaler : activer FSR 4 dans n'importe quel jeu
Jeux PC

OptiScaler : activer FSR 4 dans n'importe quel jeu

Dansguardian + Squid NTLM sur Debian Etch
réseau

Dansguardian + Squid NTLM sur Debian Etch

Corriger l'erreur d'installation Android sur SD
Android, Dépannage

Corriger l'erreur d'installation Android sur SD

KNetAttach et remote:/ — Dossiers réseau KDE
Tutoriel

KNetAttach et remote:/ — Dossiers réseau KDE