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 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, çad non spécifique à un domaine en particulier -
Configuration
Les explications de configuration du serveur httpd ont été abordés sur cet autre article : Relayd : Gestion des entêtes pour httpd (cf : 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êteheader
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 : relayd
ip4 = "public-address-ipv4"
http protocol "hw" {
match request path "/*.atom" tag "CACHE"
match request path "/*.css" tag "CACHE"
match request path "/*.gif" tag "CACHE"
match request path "/*.html" tag "CACHE"
match request path "/*.ico" tag "CACHE"
match request path "/*.jpg" tag "CACHE"
match request path "/*.js" tag "CACHE"
match request path "/*.png" tag "CACHE"
match request path "/*.rss" tag "CACHE"
match request path "/*.svg" tag "CACHE"
match request path "/*.xml" tag "CACHE"
match response tagged "CACHE" header set "Cache-Control" value "public, max-age=86400"
tcp { nodelay, sack, socket buffer 65536, backlog 100 }
pass
}
relay "www" {
listen on $ip4 port 80
protocol hw
forward to 127.0.0.1 port 80
}
Documentations
Manpages
Autres documentations
- L’article de Xavier Cartron @prx : "Optimisation du cache et de la bande passante"