matrix.example.tld {

  handle {
        encode zstd gzip

        # Use the docker service name instead of localhost or 127.0.0.1  here 
        matrix-traefik:8080 {  
               header_up X-Forwarded-Port {http.request.port}
               header_up X-Forwarded-TlsProto {tls_protocol}
               header_up X-Forwarded-TlsCipher {tls_cipher}
               header_up X-Forwarded-HttpsProto {proto}
        }
  }
}

# Put `https://` at the beginning to enforce https protocol as 8448 is not the default https port (which is 443) 
https://matrix.example.tld:8448 {
    handle {
        encode zstd gzip

        #  Use the docker service name instead of localhost or 127.0.0.1  here 
        reverse_proxy matrix-traefik:8448 {
               header_up X-Forwarded-Port {http.request.port}
               header_up X-Forwarded-TlsProto {tls_protocol}
               header_up X-Forwarded-TlsCipher {tls_cipher}
               header_up X-Forwarded-HttpsProto {proto}
        }
    }
}


example.tld {
# Uncomment this if you are following "(Option 3): Setting up reverse-proxying of the well-known files from the base domain's server to the Matrix server" of https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-well-known.md#option-3-setting-up-reverse-proxying-of-the-well-known-files-from-the-base-domains-server-to-the-matrix-server
    @wellknown {
        path /.well-known/matrix/*
    }

    handle @wellknown {
        reverse_proxy https://matrix.example.tld {
            header_up Host {http.reverse_proxy.upstream.hostport}
        }
    }
}