# 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; } }