Hi there, I would like to make sure the www subdomain redirects the users to the actual Discourse install. I feel like this needs to be the case to ensure I don’t lose visitors. Most people don’t leave out the ‘www’ when visiting websites.
You need to add an A record in your DNS settings at your registrar for www pointing to the server’s IP. The same one you are currently pointing the domain.com A record to.
Will this cause issues when the user visits using the www version? Discourse is set to not have the www included.
No because the user will be redirected. It won’t serve the same site under multiple domains.
You want these guides. I used them for the same exact purpose:
Are you saying adding the A record for ‘www’ isn’t enough? I read through those articles.
My site would get a nasty message on the browser without registering a certificate for both “sub-domains”.
I’ve just set up Discourse on a Digital Ocean droplet. For step 2, editing discourse.conf, does that require nginx to be installed? I’m not certain but I don’t think my droplet has nginx installed and I’m at a loss with how to install it.
I think this guide explains that part:
Yes adding an a record for www aimed at the same IP will be adequate to redirect the traffic.
You don’t need to do anything outlined in those other guides, an A record pointed to the IP will suffice for a simple redirect.
Try not to complicate your install unless absolutely necessary.
Will this be enough to avoid a
NET::ERR_CERT_COMMON_NAME_INVALID browser error though? If I install discourse on the www subdomain, accessing the site with https://example.com gives me that error. It only works if you use https://www.example.com.
That’s why you want to use a redirect, discourse can’t be served from multiple URLs.
Pick one, redirect the other.
I have a similar issue and using a URL redirect record at the DNS level doesn’t solve the problem for me.
I installed Discourse using the hostname ‘www.example.com’ and the following DNS records:
A Record host:WWW value:my_server_ip CNAME host:@ value: www.example.com URL Redirect Record host:@ value:https://www.example.com
If I then use SSL Server Test (Powered by Qualys SSL Labs) to check the URL
https://example.com without the WWW I get a Certificate name mismatch and in my browser a
Apologies again if I’m missing something obvious here, networking isn’t my strong point!
Hence why I posted those links. I’d love it to be as simple as a DNS change. It didn’t seem to be that simple to me either. To work via https I had to ensure that a cert was being registered for both addresses. To achieve that use one of the guides I posted above. The other guide allows you to perform a redirect.
Users are very unlikely to specify the protocol when typing in a URL. If you’re really worried about it you can just use Cloudflare for DNS and a simple page rule.
Yeah, I ‘moved’ my domain (well I just chose to cut off the www) which is why I had to serve existing links already on sites I didn’t control referring to my old domain with https. That might explain why in my case I had no choice but to do the full job.
However, if for any reason you want https://www.example.com to work (in my case I did because such links were already ‘out there’) you have to follow the provided guides
Or just use a page rule as stated above. It will front the domain using a wildcard cert and redirect the traffic seamlessly.
All with zero additional complexity on the Discourse server.
What’s a page rule?
I’m intending to follow How To Install Discourse Behind Nginx on Ubuntu 14.04 | DigitalOcean to install Nginx on my Digital Ocean droplet and then apply the rules listed in “step 2” to redirect to the correct domain. I think this should work! I’ll try it tomorrow and see if it allows me to redirect all combinations of https://www., http://www, http://domain.com, https://domain.com to my discourse hostname which the Lets Encrypt cert which is is https://www.domain.com.
Did you need to install Nginx in-front of Discourse to get this to work? On my Digital Ocean droplet the path “/etc/nginx/” used in the additional hooks doesn’t exist.