50 lines
2.4 KiB
Nginx Configuration File
50 lines
2.4 KiB
Nginx Configuration File
location / {
|
|
|
|
# Le service n'écoute que sur la boucle locale (cf. conf/systemd.service).
|
|
# nginx est le seul chemin d'accès, et donc le seul endroit où l'identité
|
|
# est établie.
|
|
proxy_pass http://127.0.0.1:__PORT__;
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Intégration SSOwat — c'est cette ligne qui rend `YNH_USER` fiable
|
|
# ---------------------------------------------------------------------------
|
|
# `proxy_params_with_auth` (fourni par YunoHost) transmet à l'application les
|
|
# en-têtes d'identité, là où `proxy_params_no_auth` les vide explicitement.
|
|
#
|
|
# Deux jeux d'en-têtes coexistent, et ce n'est pas une redondance :
|
|
# - SSOwat (Lua, `access.lua`) injecte `YNH_USER`, `YNH_USER_EMAIL` et
|
|
# `YNH_USER_FULLNAME` dans la requête ; c'est ce que MaBibli lit.
|
|
# - `proxy_params_with_auth` ajoute par-dessus `Ynh-User`, `Ynh-User-Email`,
|
|
# `Ynh-User-Fullname`, `REMOTE_USER` et `X-Forwarded-User`, recopiés depuis
|
|
# les précédents pour les applications qui attendent la forme à tirets.
|
|
#
|
|
# Anti-usurpation : avant toute injection, SSOwat efface *tous* les en-têtes
|
|
# entrants dont le nom commence par `ynh_` ou `ynh-`, sans distinction de casse.
|
|
# Un client ne peut donc pas fournir son propre `YNH_USER` — à condition que la
|
|
# requête passe bien par nginx, d'où la contrainte d'écoute sur 127.0.0.1.
|
|
include proxy_params_with_auth;
|
|
|
|
# Le client Blazor télécharge des assemblies .wasm de plusieurs mégaoctets, et le
|
|
# premier chargement en enchaîne beaucoup. Des tampons plus larges évitent que
|
|
# nginx ne les fasse transiter par des fichiers temporaires.
|
|
proxy_buffers 16 32k;
|
|
proxy_buffer_size 32k;
|
|
|
|
# Le lookup ISBN interroge la BnF puis OpenLibrary en cascade, avec un délai de
|
|
# 10 s par source côté application : laisser à nginx une marge au-dessus.
|
|
proxy_read_timeout 60s;
|
|
|
|
# Aucun envoi de fichier : les ebooks sont des fiches, pas des fichiers
|
|
# (CLAUDE.md, « Ebooks : fiches uniquement »). Une limite basse suffit.
|
|
client_max_body_size 1m;
|
|
|
|
# `application/wasm` n'est pas dans la liste gzip par défaut, et les assemblies
|
|
# Blazor se compressent très bien.
|
|
gzip on;
|
|
gzip_min_length 1024;
|
|
gzip_proxied any;
|
|
gzip_types application/wasm application/octet-stream application/json
|
|
application/javascript text/css text/plain
|
|
application/manifest+json;
|
|
}
|