Официальная документация NGINX рекомендует использовать директиву return вместо использования директивы rewrite для осуществления перенаправления. Это так, поскольку переписываемый запрос не предназначен для этого сервера, но он все еще обрабатывается в этом блоке сервера. Таким образом, перенаправления правильно выполняются с помощью директивы return, поскольку вся обработка останавливается и ответ отправляется немедленно. NGINX не рекомендует переписывать для перенаправления здесь: http://nginx.org/en/docs/http/converting_rewrite_rules.html
Синтаксис для директивы возврата: URL кода возврата; Как вы изначально делали постоянное переписывание, так и вы можете использовать 301 в качестве кода для ответа, указывая, что это постоянное перенаправление. Ваш https адрес будет передан в разделе URL. Ссылка: http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return
Таким образом, ваша правильная конфигурация будет
server {
listen 80;
server_name *.mydomain.com;
#Redirect all nonssl requests to ssl.
return 301 https://$server_name$request_uri;
}
Это, вероятно, позволит вам правильно перенаправить на ваш домен ssl с использованием группового блока сервера. Вы также можете попробовать использовать универсальное имя сервера подчеркивания '_' или $ host, как предложено в комментарии выше. Дайте нам знать!