I recently moved my blog away from GitHub pages to Ghost, and had to set up HTTPS redirects for the same. This is how you redirect HTTP requests to HTTPS with Nginx.

You will likely have two site configuration files in your /etc/nginx/sites-enabled configuration directory. I have a www.asad.pw.conf and a www.asad.pw-ssl.conf file.

In the non-SSL configuration file, this is what I set:

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

    server_name www.asad.pw;

    location / {
        return 301 https://$server_name$request_uri;
    }
}

**Note: ** You might want to use return 302 until you're sure that the redirection is working as expected because 301 redirects can be hard to clear from your browser.

And that's it! All your http requests will now be redirected to https, along with any query string parameters or URL path details.