NGINXの公式ドキュメントでは、リダイレクトを有効にするためにrewriteディレクティブを使用する代わりに、returnディレクティブを使用することを推奨しています。これは、書き換えられるリクエストがそのサーバー向けではないため、そのサーバーブロックで処理されるためです。そのため、すべての処理が停止し、応答がすぐに送信されるため、代わりにreturnディレクティブを使用してリダイレクトが正しく実行されます。NGINXは、リダイレクトのリライトをここで推奨しません:http ://nginx.org/en/docs/http/converting_rewrite_rules.html
returnディレクティブの構文は次のとおりです。returncode 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を試すこともできます。知らせて下さい!