HTTPS works perfectly, but HTTP URL displays NGINX welcome page and doesn't redirect

Are you running an external nginx in the Discourse server? Why?

Discourse already ships with a pre-configured nginx that will handle that provided you let it listen to the 80 and 443 ports.