Set-OPS-Public/roles/serveur_nginx/defaults/main.yml
Daniel Allaire eef44c2dce nginx : dimensionner les tampons d'en-tetes pour les sessions OIDC
oauth2-proxy journalisait AuthSuccess pendant que le navigateur recevait une
erreur de passerelle : le cookie de session porte le jeton d'identite, decoupe
en plusieurs Set-Cookie, et le tampon par defaut de nginx (4 Ko) ne peut pas
les contenir.

  upstream sent too big header while reading response header from upstream
  server: icinga.chezlepro.internal, request: GET /oauth2/callback

Pose sur TOUTES les expositions : c'est une propriete du proxy, pas de ce
service-la, et le prochain service derriere un IdP rencontrerait le meme mur.

Trouve grace au journal d'evenements active juste avant : LOGIN puis
CODE_TO_TOKEN reussis pour icingaweb2 ont ecarte l'identite d'un coup.

Laisse ouvert : trois upstream timed out vers Keycloak en 14 h, alors que
Keycloak repond en millisecondes depuis l'edge. Cause non etablie — et ma
sonde MTU ne valait rien, l'ICMP etant bloque par construction entre hotes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-08 11:06:05 -04:00

47 lines
2 KiB
YAML

---
serveur_nginx_packages:
- nginx
- ssl-cert # fournit le certificat auto-signe (snakeoil)
serveur_nginx_service_name: "nginx"
# TLS : par defaut le certificat auto-signe Debian (snakeoil).
# A remplacer par des certificats de l'AC interne / ACME (step_ca) plus tard.
serveur_nginx_certificat: "/etc/ssl/certs/ssl-cert-snakeoil.pem"
serveur_nginx_cle: "/etc/ssl/private/ssl-cert-snakeoil.key"
# Durcissement de base.
serveur_nginx_server_tokens: "off"
serveur_nginx_ssl_protocols: "TLSv1.2 TLSv1.3"
serveur_nginx_taille_max_corps: "16m"
# Comportement des sites.
serveur_nginx_redirection_http: true # 80 -> 443
serveur_nginx_desactiver_defaut: false # retirer le site Debian par defaut
# Sites de reverse proxy declares a la main. Vide par defaut.
# S'AJOUTENT aux vhosts derives automatiquement de instance/plan/domaines.yml.
serveur_nginx_sites: []
# - nom: forge
# domaine: forge.{{ domaine_interne }}
# amont: "http://10.0.15.11:3000"
# certificat: "/etc/ssl/.../forge.pem" # optionnel, sinon snakeoil
# cle: "/etc/ssl/.../forge.key"
# Groupe edge auquel ce role s'identifie (pour filtrer le champ "edge" de
# instance/plan/domaines.yml). Permet plusieurs edges distincts a terme.
serveur_nginx_groupe: "serveur_nginx"
# Deriver automatiquement des vhosts depuis instance/plan/domaines.yml (bloc "exposition").
# Pour chaque exposition de type "web" dont l'edge vise ce groupe, un vhost est
# genere : amont = entree "amont" explicite, sinon http://<IP interne de la
# cible>:<port>. Une exposition non resolvable (cible sans hote actif, ou sans
# port) est ignoree (binding declare mais pas encore cablable).
serveur_nginx_publier_expositions: true
# Tampons d'en-tetes de reponse cote proxy — voir templates/expositions.conf.j2.
# Dimensionnes pour un cookie de session OIDC (jeton d'identite decoupe en plusieurs
# `Set-Cookie`), que le defaut de 4 Ko ne peut pas contenir.
serveur_nginx_proxy_buffer_size: "16k"
serveur_nginx_proxy_buffers: "8 16k"
serveur_nginx_proxy_busy_buffers_size: "32k"