Nginx http to https Redirect

A few days ago changed the site over to have https as an option; today I just changed nginx to respond to http with a 301 and redirect to the https version.

Not hard at all.

How?

Important Note: I did take a backup of my server prior to starting these changes. I strongly recommend this.

I added something like the following to my applications server subsection.

server {
   listen 80;
   listen [::]:80;
   server_name theopensourceu.org;
   return 301 https://$server_name$request_uri;
}

server {
   # listen 80; #Redirect to https above. (This is commented out)
   # listen [::]:80;
   listen 443; 
   
   server_name theopensourceu.org;
   # ... the rest #
}

So were defining a server block to handle port 80; I've seen it done with a condition too and I like that this worked as it's more straightforward.

So if it comes in on this server block, it nginx returns a 301 and the appropriate version of the URL before it even gets to express/ghost.

I checked the syntax I typed (manually) via sudo nginx -t. It passed and so I restarted nginx with: sudo systemctl reload nginx.

Everything worked very well.

Frank Villasenor

Frank Villasenor

Owner and principal author of this site. Professional Engineering Lead, Software Engineer & Architect working in the Chicagoland area as a consultant. Cert: AWS DevOps Pro
Chicago, IL