nginx found it first. nginx always finds it first, and not in a helpful way.
Your location / block swallows the request before it reaches .well-known/acme-challenge/. Add a dedicated block above everything else:
location ^~ /.well-known/acme-challenge/ {
root /var/www/html;
default_type text/plain;
}
The ^~ prefix stops nginx from even considering regex locations once this prefix matches. Apache users: check that AllowOverride None is not blocking the directory, and that no .htaccess rule is redirecting HTTP to HTTPS before the token can be served.