DNS cannot redirect your www site to non-www. The only purpose of DNS is to point both www and non-www to your server’s IP address using A
, AAAA
or CNAME
records (it makes little difference). The nginx
configuration is responsible for performing the redirect from www to non-www.
Your second server block is intended to redirect from www to non-www, but currently only handles http
connections (on port 80).
You can move the default server and use that to redirect everything to the intended domain name. For example:
ssl_certificate /etc/nginx/ssl/cert_chain.crt;
ssl_certificate_key /etc/nginx/ssl/example_com.key;
server {
listen 80 default_server;
listen 443 ssl default_server;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
...
}
Assuming that you have a common certificate for both the www and non-www domain names, you can move the ssl_
directives into the outer block and allow them to be inherited into both server blocks (as shown above).
See this document for more.