# {{ ansible_managed }} {% if cloud_nginx_tls | default(false) %} server { listen 80; listen [::]:80; server_name {{ item.server_name }}; # ACME http-01 renewals keep working over plain http location /.well-known/acme-challenge/ { root /var/www/letsencrypt; } location / { return 301 https://$host$request_uri; } } {% endif %} server { {% if cloud_nginx_tls | default(false) %} listen 443 ssl; listen [::]:443 ssl; http2 on; ssl_certificate /etc/letsencrypt/live/{{ item.server_name }}/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/{{ item.server_name }}/privkey.pem; {% else %} listen 80; listen [::]:80; {% endif %} server_name {{ item.server_name }}; client_max_body_size {{ item.max_body | default('512m') }}; {% if item.root is defined %} root {{ item.root }}; index index.html index.htm; {% else %} location / { proxy_pass http://127.0.0.1:{{ item.port }}; 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; proxy_set_header X-Forwarded-Host $host; proxy_read_timeout 300s; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } {% endif %} {% if item.name == 'nextcloud' %} # Nextcloud service discovery location = /.well-known/carddav { return 301 /remote.php/dav/; } location = /.well-known/caldav { return 301 /remote.php/dav/; } {% endif %} }