
🌐 Aussi en: English · Deutsch · Español
Le programme télé de ce soir était une vraie catastrophe, alors j’ai préféré bricoler mes serveurs. Quoi de mieux pour occuper la soirée qu’une optimisation des performances au niveau du protocole ?
Aujourd’hui, j’aimerais vous parler de quelque chose qui améliore les performances « sous le capot », à savoir la façon dont les données sont transmises entre le navigateur et le serveur web. Vous avez peut-être déjà entendu parler de HTTP/3, le tout nouveau protocole de transport qui promet des chargements de pages plus rapides et plus fiables. Les benchmarks font état de gains d’environ 10 à 15 % en conditions réelles, particulièrement sensibles sur les appareils mobiles.
Pourquoi changer ?
Jusqu’ici, mon blog WordPress tournait sur le bon vieux serveur web Apache. Fiable, mature, mais malheureusement toujours à la traîne en matière de prise en charge de HTTP/3. Ce standard n’a plus rien d’expérimental : il est là, et les navigateurs (Chrome, Firefox, Safari, Edge) le parlent déjà couramment. Apache, en revanche, peine à rattraper son retard.
Étape suivante logique : migrer vers Nginx, qui prend en charge HTTP/3. Ce qui impliquait bien sûr de porter ma configuration Apache dans la syntaxe Nginx – un vrai casse-tête de geek en soi.
Les étapes de la migration
- Activer le dépôt officiel Nginx
Les dépôts par défaut de Debian 12 ne contiennent pas encore de build avec prise en charge de HTTP/3. Pour obtenir QUIC et HTTP/3, j’ai dû ajouter directement le dépôt de l’éditeur. - Installer Nginx
Simple, mais essentiel. Sans le dépôt de l’éditeur, vous vous retrouvez avec un paquet obsolète. - Migrer la configuration
Syntaxe.confd’Apache ≠ syntaxe Nginx. Les règles.htaccess, par exemple, doivent être traduites à la main en blocsserveret en directiveslocation. - Basculer les services
Arrêter Apache, le retirer du démarrage automatique, puis activer et démarrer Nginx. Vous ne voulez surtout pas que les deux écoutent sur le port 80/443. - Adapter l’utilisateur PHP-FPM
Sous Apache, l’utilisateur étaitwww-data. Avec Nginx, le processus tourne généralement sousnginx, j’ai donc dû adapter les droits en conséquence. - Corriger les en-têtes de sécurité
L’un de mes en-têtes HTTP durcis entrait en conflit avec la nouvelle configuration. Un petit ajustement a réglé les problèmes de handshake. - Tester, tester, tester
Car dans la vie d’un sysadmin, si vous ne l’avez pas testé avec trois navigateurs différents et sur votre téléphone via un Wi-Fi douteux, ça ne marche pas vraiment.
Le résultat
Mon blog sert désormais joyeusement ses pages en HTTP/3 (QUIC). Les pages semblent se charger un poil plus vite, surtout quand on passe d’un article à l’autre ou qu’on recharge avec une connexion instable. C’est typiquement le genre de mise à jour qu’on ne remarque pas quand elle est là, mais dont on sent cruellement l’absence.
Voici le journal de mon serveur web NGINX avec les requêtes des clients. On voit maintenant clairement HTTP/3 à l’œuvre :
79.246.98.138 - - [22/Aug/2025:19:28:19 +0000] "GET /wp-content/uploads/2025/08/hangman.webp HTTP/3.0" 200 341646 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:28:19 +0000] "GET /wp-content/uploads/2025/08/vpn_broken.png HTTP/3.0" 200 927519 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:28:19 +0000] "GET /page/2/ HTTP/3.0" 200 13150 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/05/cropped-superman-1-1.png HTTP/3.0" 200 9032 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/08/chaos-300x300.webp HTTP/3.0" 200 12818 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/08/rocket-300x300.webp HTTP/3.0" 200 10792 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/08/bootme-300x200.webp HTTP/3.0" 200 15418 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/08/hangman-300x300.webp HTTP/3.0" 200 17030 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2025/05/rack-205x300.jpg HTTP/3.0" 200 19892 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2024/09/grapheneos-135x300.png HTTP/3.0" 200 22647 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:23 +0000] "GET /wp-content/uploads/2024/11/protectli-300x150.png HTTP/3.0" 200 22307 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0) Gecko/20100101 Firefox/142.0" 79.246.98.138 - - [22/Aug/2025:19:40:24 +0000] "GET /wp-content/cache/wpo-minify/1755704871/assets/wpo-minify-header-9e1552c9.min.css HTTP/3.0" 200 510477 "https://www.apt-upgrade.me/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:142.0)
Le mot de la fin
Est-ce que ça valait la peine ? Absolument. Passer d’Apache à Nginx, ce n’était pas seulement une question de HTTP/3 : j’y ai aussi gagné un contrôle plus fin sur la mise en cache, le reverse proxy et la configuration SSL/TLS. Et en prime, ça a calmé ma démangeaison de geek nocturne.
Prochaine étape sur ma liste : optimiser les paramètres QUIC pour établir les connexions encore plus vite et expérimenter la reprise de session 0-RTT. Mais ça, c’est une histoire pour une autre soirée d’insomnie.






