Desde o nginx 0.7.14, você pode criar uma configuração compacta para http e https servindo sem dividir em {} blocos de servidores separados:
listen 80;
listen 443 ssl;
# rest ssl configuration...
Se você quiser proteger vários locais - basta verificar e redirecionar com "retornar" ou "reescrever":
location = /login.php {
if($scheme = "http") {
rewrite ^ https://$host$request_uri? permanent;
}
...
}