複数のドメインでの Nginx HTTPS リダイレクト ループ

複数のドメインでの Nginx HTTPS リダイレクト ループ

同様のトピックに関する他の質問があることは知っていますが、私の特定の問題を解決できる解決策はどこにも見つかりません。ここでの違いは、異なるサイトを持つ複数のドメインです。

私はNginxを複数のドメインでセットアップしています:example1.comexample2.com。また、次の「デフォルト」ホストファイルもあります。「Nginx へようこそ!」のデフォルト Web ページ

次のようないくつかの異なる構成を試しました:

# 1
server {
   server_name example2.com www.example2.com;
   listen 80;
   return 301 https://example2.com$request_uri;
}
server {
    server_name example2.com www.example2.com;
    listen 443 default_server;

    ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

# 2
server {
    server_name example2.com www.example2.com;
    listen 80;
    listen 443

    return 301 https://example2.com$request_uri;

    ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

}

1結果は次のようになります:

  • http://例2.com リダイレクト先https://例2.com の「ようこそ」ページを表示
  • http://例1.com リダイレクト先https://例2.com の「ようこそ」ページを表示
  • https://例1.com の実際のコンテンツの例を表示1.com

2結果は次のようになります:

  • http://例2リダイレクトループのある.com
  • https://例2リダイレクトループのある.com
  • http://例1.com リダイレクト先http://例2リダイレクトループのある.com
  • https://例1.com の実際のコンテンツの例を表示1.com

のコンテンツをexample2.comデフォルトの「Welcome」フォルダに置くことはできません。そうしないと、 に影響しますexample1.com

答え1

Richard Smith のおかげで、自分が何を間違えたのかが分かりました。ルートの場所を正しく含めていませんでした。他の人の役に立つかもしれないので、正しいファイルを以下に示します。

# example2.com.conf:
server {
    server_name example2.com www.example2.com;
    listen      80;
    return      301 https://example2.com$request_uri;
    # What I was missing:
    root            /var/www/example2-com;
}
server {
    server_name     example2.com www.example2.com;
    listen      443 ssl;# default_server;

    # What I was missing:
    root            /var/www/example2-com;

    ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem;
    include         /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam     /etc/letsencrypt/ssl-dhparams.pem;

}

# example1.com.conf:
server {
    server_name example1.com www.example1.com;
    listen      80;
    return      301 https://example1.com$request_uri;

    # What I was missing:
    root            /var/www/example1-com;
}
server {
    server_name     nerd.ink www.nerd.ink;
    listen      443 ssl; # default_server;

    # What I was missing:
    root            /var/www/example1-com;

    ssl_certificate /etc/letsencrypt/live/example1.com/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example1.com/privkey.pem;
    include         /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam     /etc/letsencrypt/ssl-dhparams.pem;
}

関連情報