Bibliothèque vidéo partagée par URL signées
Extrait de li.k3nny.fr et rendu indépendant du serveur : toute la configuration propre à l'hôte passe par li.env (URL publique, chemins, expiration, répertoires « HTML seulement », commande nginx). Écarts avec la version en production : - li-user del retire aussi la page .html, pas seulement le .xspf ; - li-gen ignore les répertoires cachés, pas seulement les fichiers ; - textes de la page HTML accentués. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# Vhost de la FACADE — le nginx en frontal, qui porte le TLS et relaie vers le
|
||||
# conteneur « li ». A adapter : nom, chemins du certificat, et le resolveur
|
||||
# si la facade ne tourne pas dans Docker.
|
||||
#
|
||||
# Aucune authentification ici : le laissez-passer voyage dans l URL, et il est
|
||||
# verifie par le conteneur « li », seul a connaitre les secrets. Un portail
|
||||
# d authentification (auth_request, SSO…) serait de toute facon inutilisable :
|
||||
# VLC ne suit pas une redirection vers une page de connexion.
|
||||
|
||||
# Le format « combined » par defaut journalise $request, donc la ligne de
|
||||
# requete ENTIERE, donc la signature. Ce vhost a donc son propre format : la
|
||||
# facade ne doit pas consigner ce que le conteneur « li » prend soin de taire.
|
||||
# Un journal qui porte le laissez-passer est un journal rejouable.
|
||||
log_format li_edge '$remote_addr "$arg_u" "$uri" $status $body_bytes_sent $request_time';
|
||||
|
||||
# Resolveur interne de Docker : indispensable des qu un proxy_pass porte une
|
||||
# variable. Sans lui, nginx resout l amont UNE SEULE FOIS au demarrage, et un
|
||||
# conteneur qui redemarre avec une autre adresse produit un 502 permanent.
|
||||
# A retirer si ce resolveur est deja declare ailleurs dans le contexte http.
|
||||
resolver 127.0.0.11 valid=30s ipv6=off;
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name li.example.org;
|
||||
location / { return 301 https://$host$request_uri; }
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl;
|
||||
http2 on;
|
||||
server_name li.example.org;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/li.example.org/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/li.example.org/privkey.pem;
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
ssl_session_tickets off;
|
||||
|
||||
access_log /dev/stdout li_edge;
|
||||
|
||||
add_header Strict-Transport-Security "max-age=31536000" always;
|
||||
|
||||
location / {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Host $host;
|
||||
# ECRASE, jamais complete : c est ce qui rend X-Real-IP digne de la
|
||||
# confiance que lui accorde le conteneur « li ».
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
# Sans « proxy_buffering off », nginx accumulerait le .mkv avant d en
|
||||
# relayer le premier octet. La lecture ne demarrerait jamais.
|
||||
proxy_buffering off;
|
||||
proxy_request_buffering off;
|
||||
proxy_read_timeout 300s;
|
||||
proxy_send_timeout 600s;
|
||||
send_timeout 600s;
|
||||
|
||||
set $upstream http://li:80;
|
||||
proxy_pass $upstream;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user