La documentación oficial de NGINX alienta a usar la directiva de retorno en lugar de usar la directiva de reescritura para efectuar la redirección. Esto es así, ya que la solicitud que se está reescribiendo no está destinada a ese servidor, pero aún se procesa en ese bloque de servidor. Por lo tanto, las redirecciones se realizan correctamente con una directiva de retorno, ya que se detiene todo el procesamiento y se envía una respuesta de inmediato. NGINX desalienta la reescritura para la redirección aquí: http://nginx.org/en/docs/http/converting_rewrite_rules.html
La sintaxis para la directiva de retorno es: URL del código de retorno; Como originalmente estaba haciendo una reescritura permanente, por lo tanto, puede usar 301 como el código para responder, lo que indica que es una redirección permanente. Su dirección https se pasará en la sección de URL. Referencia: http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return
Entonces su configuración correcta sería
server {
listen 80;
server_name *.mydomain.com;
#Redirect all nonssl requests to ssl.
return 301 https://$server_name$request_uri;
}
Esto probablemente le permitiría redirigir correctamente a su dominio ssl, con un bloqueo de servidor comodín. También puede probar el nombre de servidor genérico de subrayado '_' o $ host como se sugiere en el comentario anterior. ¡Haznos saber!