Nginxすべてのサブドメインをサブドメイン以外のURLにリダイレクトする


1

私は現在以下の問題を出しています、そして、地獄によって、私はそれを解決することができません。 >私がGoogleで見つけた20のようなスレッドは助けになりません。

まず第一に、私はこのように見えるHTTPSリダイレクトへの単純なHTTPを作成しました:

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 ドメイン:https:// my-domain.com。その前にサブドメインがない。 HTTPSサブドメインについても同じことが言えます。私は文字通り(今のところ)サブドメインを禁止したいと思います。

私は追加のようにたくさんの設定を試してみました * .my-domain.com それでもserver_nameには期待どおりには機能しません。 * .my-domain.comから私の通常のHTTPSドメインへのHTTPSリダイレクトを作成しようとしましたが、それでも各設定で同様の結果が得られます。

  1. すべてのHTTPリクエストは、サブドメインを含むHTTPS URLになります。
  2. すべてのHTTPSリクエストがサブドメインなしのHTTPS URLになることはありません。

今私の質問:どのように私はそれにNOサブドメインを含む特定のhttps URLにすべてのサブドメイン(httpとhttps)をリダイレクトできますか?どの組み合わせでも、常に次のようになります。 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:// my-domain も。これは私のニーズにとっては「いい」と思われます。

回答:


0

あなたが使用することができます default_server どれかにマッチするブロック http そして https 別のドメインで明示的に定義されていないドメイン server ブロック。の https partはワイルドカード証明書でのみ正しく機能します。

server {
    listen 80 default_server;
    listen 443 ssl default_server;
    ... ssl configuration
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    ...
}

見る このドキュメント 詳細については。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.