現在、次のような問題が発生していますが、どう考えても解決できません。Google で見つけた 20 件を超える同様のスレッドは役に立ちません。
まず、次のような単純な HTTP から HTTPS へのリダイレクトを作成しました。
server {
listen 80;
server_name my-domain.com;
return 301 https://my-domain.com$request_uri;
}
server {
listen 443 ssl http2;
server_name my-domain.com;
...
}
これは問題なく動作します。開こうとするとmy-domain.com、リダイレクトされますhttps://my-domain.comしかし、サブドメインの問題はまだ残っています。www.my-domain.comまたはtest.my-domain.comこれらのサブドメインをルートにリダイレクトしたいのですが翻訳ドメイン: https:// my-domain.com。その前にサブドメインはありません。HTTPS サブドメインでも同じことが表示されます。私は文字通り、すべてのサブドメインを禁止したいと考えています (今のところ)。
私は多くの設定を試しました。*.my-domain.comserver_name に追加しましたが、期待どおりに動作しません。また、*.my-domain.com から通常の HTTPS ドメインへの HTTPS リダイレクトも作成してみましたが、各構成で同様の結果になりました。
- すべての HTTP リクエストの結果は、サブドメインを含む HTTPS URL になります。
- すべての HTTPS リクエストは、サブドメインを含まない HTTPS URL にはなりません。
さて、私の質問は:すべてのサブドメイン(http と https)を、サブドメインを含まない特定の https URL にリダイレクトするにはどうすればいいでしょうか?すべての組み合わせは常に次のようになります:https:// my-domain.com$request_uri
前もって感謝します
アップデート:
問題を完全に解決したわけではありませんが、何とか解決できました。ドメイン構成で www.my-domain.com から my-domain.com への CNAME を作成しました。また、nginx を変更し、443 www.my-domain から https:// my-domain にリダイレクトする新しいサーバー構成を追加しました。また、www.my-domain から https:// my-domain にリダイレクトする通常のポート 80 サーバーもあります。証明書を変更し、ドメインとサブドメインのリストに www.my-domain を追加しました。これで、www.my-domain (http または https) のすべてのリクエストがリダイレクトされます。https://私のドメインまた、my-domain(httpでwww.なし)は、https://私のドメインこれも私のニーズには「適している」ようです。
答え1
ブロックを使用して、別のブロックで明示的に定義されていないドメインとdefault_server
一致させることができます。この部分は、ワイルドカード証明書でのみ適切に機能します。http
https
server
https
server {
listen 80 default_server;
listen 443 ssl default_server;
... ssl configuration
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
...
}
見るこのドキュメント詳細については。