nginx not redirecting to https

Your server block for http is missing server_name. This means nginx will use the default_server for these requests, which will display the welcome page.

Replace your first block with:

server {
    listen 80;
    listen [::]:80;

    server_name shiny.example.com;

    return 301 https://shiny.example.com;
}