alliance-boreale/docs/architecture/2026-01-29 - Cache OVH - NGINX.md

100 lines
3.9 KiB
Markdown
Raw Normal View History

2026-01-29 09:46:17 -05:00
Le truc, cest de viser ce qui **répète** (assets), ce qui **burst** (pics), et ce qui **sature** (gros transferts).
## 1) Odoo “sites web” : là où tu peux gagner gros
Odoo sert beaucoup de contenu *identique* (assets, images, pièces jointes). Ça se cache très bien **au VPS**.
### À faire au VPS (reverse-proxy cache)
- **Cache long** pour les assets versionnés :
- `/web/assets/*`
- fichiers statiques thème/website
- **Cache prudent** pour les médias/attachments :
- `/web/content/*` (souvent images/documents publics)
- **Micro-cache** (15 s) pour les pages publiques *anonymes* (anti-burst) : énorme ROI quand tu as des pics.
Même 5 secondes de micro-cache peut diviser tes hits backend par 10 sur un pic.
### Réduire le poids
- Activer **gzip/brotli** (au VPS) pour HTML/CSS/JS/JSON.
- Forcer des images plus petites (WebP si ton pipeline le permet).
- Vérifier que tes pages publiques ne tirent pas des méga-images “full-res”.
## 2) Nextcloud : gains réels, mais plus limités
Nextcloud est majoritairement **auth + personnalisé + WebDAV** ⇒ cache “full” non. Par contre :
### Ce que tu peux cacher sans risque (au VPS)
- **Assets statiques** Nextcloud (JS/CSS/fonts/images) : `/core/`, `/apps/`, `/dist/`, `/themes/` (selon ton layout).
- Résultat : moins daller-retour maison pour le “bruit” de lUI, surtout quand plusieurs utilisateurs se connectent.
### Ce que tu optimises surtout autrement (pas via cache)
- **Limiter la concurrence** et **plafonner le bulk** :
- limiter le nombre de téléchargements simultanés
- plafonner le débit par connexion (ou par IP)
- **Contrôler les partages publics** (si cest ça qui mange ton upload) :
- expiration des liens publics
- limiter taille max / quotas
- éviter “gros dépôt public” tant que tu es à 50 Mb/s
## 3) Le trio gagnant pour ton 50 Mb/s
1. **QoS/shaper à la maison** (cap à \~45 Mb/s + fq_codel/cake) → stabilité immédiate.
2. **Edge cache au VPS** pour Odoo + assets Nextcloud → réduction du trafic répétitif.
3. **Rate-limit / limites de transferts** (au VPS et/ou à la maison) → un client ne te tue pas.
## 4) Exemple concret (Nginx cache au VPS) simple et safe
Tu peux garder HAProxy pour le routage, et mettre Nginx devant pour le cache (ou linverse). Exemple Nginx “edge cache” :
```nginx
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=EDGE:200m max_size=30g inactive=7d use_temp_path=off;
map $http_cookie $has_cookie { default 1; "" 0; }
map $http_authorization $has_auth { default 1; "" 0; }
# Odoo - assets cacheables
location ^~ /web/assets/ {
proxy_pass http://odoo_home;
proxy_cache EDGE;
proxy_cache_valid 200 7d;
add_header X-Cache $upstream_cache_status always;
}
# Odoo - médias (à valider selon ton usage)
location ^~ /web/content/ {
proxy_pass http://odoo_home;
proxy_cache EDGE;
proxy_cache_valid 200 1d;
add_header X-Cache $upstream_cache_status always;
}
# Odoo - microcache pages publiques (GET sans cookies/auth)
location / {
proxy_pass http://odoo_home;
if ($request_method != GET) { set $skip 1; }
if ($has_cookie = 1) { set $skip 1; }
if ($has_auth = 1) { set $skip 1; }
proxy_cache EDGE;
proxy_cache_bypass $skip;
proxy_no_cache $skip;
proxy_cache_valid 200 2s;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
add_header X-Cache $upstream_cache_status always;
}
```
Même si tu nactives que **/web/assets/** + micro-cache 2s sur pages publiques, tu vas le sentir.
## 5) La question qui détermine la meilleure optimisation (1 seule)
Ton upload est surtout mangé par :
- **visiteurs des sites Odoo** (trafic web public), ou
- **transferts de fichiers Nextcloud** (downloads/shares/sync) ?
Dis-moi “Odoo” ou “Nextcloud”, et je te donne le réglage prioritaire (cache/micro-cache vs plafonds/rate-limit) avec des valeurs concrètes adaptées à ton 50 Mb/s.