# Vhosts derives de docs/domaines.yml (bloc exposition) — gere par Set-OPS # (role serveurs_nginx). Ne pas editer a la main. # # Une exposition de type "web" produit un vhost si son amont est resolvable : # entree "amont" explicite, sinon http://:. # Une exposition sans amont resolvable (cible sans hote actif, ou sans port) # est listee ci-dessous mais NON publiee (binding declare, pas encore cablable). {% for paire in serveurs_nginx_expositions | default([]) %} {% set dom = paire.0.key %} {% set expo = paire.1 %} {% if (expo.type | default('web')) == 'web' %} {% set fqdn = dom if expo.nom in ['@', dom] else (expo.nom ~ '.' ~ dom) %} {% set ns = namespace(amont=(expo.amont | default('', true))) %} {% if not ns.amont and (groups[expo.cible] | default([]) | length > 0) and (expo.port is defined) and (hostvars[groups[expo.cible] | first].ansible_host is defined) %} {% set ns.amont = 'http://' ~ hostvars[groups[expo.cible] | first].ansible_host ~ ':' ~ expo.port %} {% endif %} {% if ns.amont %} # {{ fqdn }} -> {{ expo.cible }} ({{ ns.amont }}) {% if serveurs_nginx_redirection_http | bool %} server { listen 80; listen [::]:80; server_name {{ fqdn }}; return 301 https://$host$request_uri; } {% endif %} server { listen 443 ssl; listen [::]:443 ssl; http2 on; server_name {{ fqdn }}; ssl_certificate {{ serveurs_nginx_certificat }}; ssl_certificate_key {{ serveurs_nginx_cle }}; location / { proxy_pass {{ ns.amont }}; proxy_set_header Host $host; 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; } } {% else %} # (non publie) {{ fqdn }} -> {{ expo.cible }} : amont non resolvable (cible sans hote actif ou sans port). {% endif %} {% endif %} {% endfor %}