+++
author = "Yann Verry"
categories = ["www"]
date = 2021-02-07T21:42:19Z
description = ""
draft = false
image = "__GHOST_URL__/content/images/2021/02/caddy.jpg"
slug = "un-serveur-web-different"
tags = ["www"]
title = "Évolution des serveurs web"

+++


Le serveur web est un composant clé sur le web et en même temps on ne pense même plus à sa présense, il est omniprésent. Au tout début j'ai comme tous utilisé massivement Apache (1 puis 2). Quelques tentatives sous lighttpd et puis nginx et maintenant pourquoi pas Caddyserver ? Il est pas dit qu'un jour je retourne pas sur Apache2 qui depuis mpm_event est top!

Quel est la définition d'un serveur web ? En éffet quel sont les features selon moi nécessaires vs un simple reverse proxy.

* Offloading de TLS, SNI
* Support de FastCGI, pour avoir PHP
* Servir des fichiers static
* Reverse Proxy
* Manipulation des headers&co
* Protection par auth basic / restrictions IPs
* Open Source

Avec cette définition on écarte donc les simples reverse proxy qui sont pourtant d'une performance importante type haproxy, envoy, traefik etc...  Le support de FastCGI est clairement quelques choses limitatif, PHP est en perte de vitesse et dorénavant le moindre service possède déjà son propre serveur web avec des performances suffisante sans être pour autant dans l'excellence en terme de performances. Le mieux étant de pouvoir servir les assets directement par notre serveur web.

Quoi qu'il en soit FastCGI pour PHP est mandatory pour moi.

## Apache

Ce serveur web à été un de mes premiers serveur que j'ai administré. Il a pour moi popularisé la fondation Apache et je dirais que sa popularité est encore aujourd'hui du à sa fameuse gestion des .htaccess qui ont permis à tout développeur de modifier les rewrite pour afficher des URLs fancy simplifier certaines réécriture pour variabiliser des requêtes.Par contre côté performance ce n'est pas la fête, il n'est pas des plus light avec des configurations pas simple.Lassé j'ai voulu exploré d'autre solutions, surtout plus light car j'ai toujours préféré les solutions légères et Apache n'est clairement pas dans cette catégorie

## Nginx

Je me souviens de ce début de serveur web super prometteur et moi en train de traduire via google translate le russe vers l'anglais. La popularité a gagné grandement quand la doc en anglais à été plus populaire et disponible.

J'utilisais beaucoup ce serveur web mais la légereté ne suffit pas. J'aime bien ne pas prendre le serveur web #1 et voir un peu ce qu'il se passe ailleurs pour voir ce qu'il se fait de bien.

## Caddy

Dans ma quête du changement je viens de switcher sur Caddyserver. Il est simple, challenge ce que j'ai vu avec un fichier de configuration unique (_Caddyfile_) et moderne.

C'est à dire moderne ?

* Support natif d'un exporteur prometheus avec de vrai metrics. Pas de ruse comme le fait actuellement nginx avec des morceaux de _lua_ (oui je sais, il faudrait la version plus mais bon).
* Gestion reverse proxy websocket, ajout des headers _x-forwarded-for_ et _proto_ out of the box
* Support de LetsEncrypt et plus récemment de ZeroSSL en fallback
* Configuration TLS par défaut sécurisé, c'est à dire >=TLSv1.2 et une suite de cipher correcte. C'est le premier serveur avec du TLS ou je n'ai RIEN à modifier

Le switch a été facile, malgré quelques recherche pas simple car j'utilise uniquement le fichier de configuration et pas API/JSON. Car oui moderne cela comprend aussi un Ingress Controler pour Kubernetes mais restons modeste avec l'auto hébergement (oui un jour peut-être k3s on verra)



Et vous quel est votre serveur web favori ? et pourquoi ?

