Example of how to redirect from non-www to www with nginx on Ubuntu:
Redirect to https
On Ubuntu go to
/etc/nginx/sites-available/
and open the file associated with your website:
vi mysite
Assuming that you site use https, the first step is to redirect http://mysite.com and http://www.mysite.com urls to https://www.mysite.com, to do that
server {listen 80;listen [::]:80;server_name mysite.com www.mysite.com;return 301 https://www.mysite.com$request_uri;}
Note if you are not using https for your website just do
server {listen 80;listen [::]:80;server_name mysite.com;return 301 http://www.mysite.com$request_uri;}
and stop here.
Redirect https://mysite.com to https://www.mysite.com
Next step. redirect https://mysite.com to https://www.mysite.com
server {listen 443 ssl;server_name mysite.com;ssl_certificate /root/ssl_certificates/mysite.crt;ssl_certificate_key /root/ssl_certificates/mysite.com.key;return 301 https://www.mysite.com$request_uri;}
Create server request for https://www.mysite.com
Final step, Create server request for https://www.mysite.com
server {listen 443 ssl;server_name www.mysite.com;ssl_certificate /root/ssl_certificates/mysite.crt;ssl_certificate_key /root/ssl_certificates/mysite.com.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';}
Complete nginx file
So, the file mysite located under /etc/nginx/sites-available/ should be similar to:
server {listen 80;listen [::]:80;server_name mysite.com www.mysite.com;return 301 https://www.mysite.com$request_uri;}server {listen 443 ssl;server_name mysite.com;ssl_certificate /root/ssl_certificates/mysite.crt;ssl_certificate_key /root/ssl_certificates/mysite.com.key;return 301 https://www.mysite.com$request_uri;}server {listen 443 ssl;server_name www.mysite.com;ssl_certificate /root/ssl_certificates/mysite.crt;ssl_certificate_key /root/ssl_certificates/mysite.com.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2;ssl_prefer_server_ciphers on;ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';}
