--- date: 2020-05-07T16:49:36+02:00 description: "Comment mettre en place du cache de contenu statique avec httpd & relayd, serveurs natifs sous OpenBSD" draft: false tags: ['relayd','Cache','httpd','HTTP','OpenBSD'] title: "Relayd : Mise en cache web pour httpd" translationKey: "relayd-web-caching" --- ## Description **OpenBSD** intègre par défaut dans le système de base, depuis 5.7 : * un serveur web, nommé **httpd** - que j'ai présenté plus ou moins succinctement {{< inside "web:httpd:httpd" ici >}} * un serveur relay, nommé **relayd** * Site web : https://bsd.plumbing/ * OpenBSD : **6.6, 6.7** --- Le problème est que le serveur **httpd** n'est pas capable de gérer la mise en cache de contenu statique. Nous passons donc le relais au serveur **relayd** qui lui en est capable - *par contre, il le fait de manière globale, {{< abbr çad "c'est-à-dire" >}} non spécifique à un domaine en particulier* - ## Configuration Les explications de configuration du serveur **httpd** ont été abordés sur cet autre article : {{< inside2 a="httpd" l="web:httpd:relayd-headers-httpd" >}}
*(cf : {{< inside2 a="httpd-exemple" l="web:httpd:relayd-headers-httpd" t="l'exemple de configuration" >}})* C'est exactement le même principe. ### relayd * Le fichier de configuration est `/etc/relayd.conf`, par défaut. Dans le contexte du protocole http, en lui donnant un nom - *le nom importe peu, mais est réutilisé plus tard, dans le contexte des déclarations de relais* : * nous ciblons tous les fichiers contenant normalement du contenu statique, en analysant les requêtes -
c'est généralement le cas pour les fichiers, tels que : * les images (GIF, JPG, PNG, SVG) * les fichiers CSS et JS, * et les fichiers HTML, et XML (Atom, RSS, etc). * nous leur appliquons une politique d'étiquetage, par l'usage de l'option `tag`. *Là, encore le nom donné importe peu pourvu que vous réutilisiez le même dans le cadre de l'entête `header` de réponse.* * puis nous retournons une entête de réponse `Cache-Control` ciblant l'étiquette. Puis nous appliquons le protocole http déclaré a un relay cible. #### relayd : exemple {{< code "web-httpd-relayd-cache-example" relayd >}} ## Documentations ### Manpages * {{< man httpd 8 >}}, {{< man "httpd.conf" 5 >}} ### Autres documentations * L'article de Xavier Cartron @prx : **"[Optimisation du cache et de la bande passante][1]"** --- [1]: https://ybad.name/ah/doku.php/4-httpd/relayd#optimisation-du-cache-et-de-la-bande-passante