Если вам ненужен http, а только https. То использовать
if ($scheme = "http") {
rewrite ^/(.*)$ https://$server_name/$1 permanent;
}
нежелательно. Firefox начиная с 6 версии будет орать на ваш сертификат. Остальные браузеры нормально. Для этого надо просто написать (без проверок)
rewrite ^/(.*)$ https://$server_name/$1 permanent;
Причина вот какая: фокс устанавливает дополнительное не совсем http соединение, которое не редиректится. И вместо доменного имени получает ip адрес сервера, на который естественно не распространяется сертификат.
Если не делать проверок то идет редирект дополнительного соединения где передается доменное имя