server {
    server_name {{ dns_name }};

    listen [::]:443 ssl ipv6only=off;
    ssl_certificate /etc/letsencrypt/live/{{ dns_name }}/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/{{ dns_name }}/privkey.pem;

    location ~ ^(/_matrix|/_synapse/client) {
        proxy_pass http://unix:/var/lib/synapse/socket/main.sock;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $host;

        # match max_upload_size defined in homeserver.yaml
        client_max_body_size 50M;

        # Synapse responses may be chunked, which is an HTTP/1.1 feature.
        proxy_http_version 1.1;
    }
}