Nginx double redirect problem:
Quickly writing this to help out anybody who is trying to fix a double redirect on their Nginx site for backlinks coming in on non-www on an http protocol.
On a site that is using Cloudflare as a CDN.
You may be scratching your head when looking at the results of site audit tools saying there is a double redirect problem from;
http://example.com to https://example.com
And then;
https://example.com to https://www.example.com
And you stick it into a redirect checker to confirm and discover it to be the case;
Which left me wondering what is wrong. As per this answer I had Nginx and Let’s Encrypt set up to redirect http://example.com to https://www.example.com in a single hop;
server { listen 80; server_name example.com; return 301 https://www.example.company$request_uri; } server { listen 443 ssl; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/www.site.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.site.com/privkey.pem; # your location there a }
So how is that happening? As you’ve probably guessed based on the bold second sentence, Cloudflare was the culprit. Although to be fair, ‘culprit’ is pretty unfair as it’s just a config setting they offer which was applied when it didn’t need to be.
It’s one of those settings you can easily turn on when you setup a site initially thinking it to be a good thing. If you are handling this at a server level it can subsequently be found and disabled;
SSL/TLS -> Edge Certificates -> Always use HTTPS
Hey presto, a single redirect and the SEO guy is happy again. For a few minutes …