EDIT: I’m leaving this post up in the unlikely case it might help someone else who makes the same dumb mistake I made. As it turns out, the problem described below is the result of having my base URL configured in a local DNS config file (/etc/hosts) to go directly to the server, thus circumventing Cloudflare and confusing my analysis of issues. To be clear, I screwed up – Cloudflare is working perfectly.
I’m using the free Flexible SSL setting, and “Always Use HTTPS” is turned on. Despite this, only requests using the “www” alias are being forwarded from http to the https scheme. Requests using no www alias are not being forwarded.
That is to say, requests to http://www.mysite.com are being forwarded to https://www.mysite.com. But requests to http://mysite.com (without “www”) are NOT being forwarded, and simply serve as requested, without SSL encryption.
This is only happening with one site. Other sites I’m managing through Cloudflare don’t have this problem – with those sites, all requests to http are forwarding to https.
Can anyone offer any advice or insight?