Обычно делаю так:
server {
listen 80;
server_name site.com www.site.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
include ssl/site.com;
server_name www.site.com;
rewrite ^(.*) https://site.com$1 permanent;
}
server {
listen 443 ssl;
include ssl/site.com;
server_name site.com;
...........
...........
...........
}
В первой секции редирект http с www и http без www на тот же, но https.
Во второй секции редирект https с www на https без www (тут обязательно должен подключаться сертификат).
В третьей секции все остальное для домена (https без www).