サーバー上に 2 つのアプリケーションがあり、HTTPS に切り替える予定になるまでは問題なく動作していました。
アプリ 1 の Nginx 設定:
server_name abc.com my.abc.com static.abc.com
アプリ2の会議:
server_name _;
SSLを有効にする前は、両方のアプリは動作していました。例:
アプリ1http://static.abc.com/some-assets.png
アプリ2http://static.def.com/some-assets.png
SSLを有効にした後
アプリ1https://static.abc.com/some-assets.png
アプリ2https://static.def.com/some-assets.png
今App2 にアクセスしようとすると、https://static.def.com/some-assets.png
何らかの理由で App 1 も参照されます。
調べてみたところ、 App 2 の Nginx 構成server_name _;
を置き換えるとserver_name static.def.com;
動作することがわかりました。
私の質問は、HTTPS 経由でドメインを提供する場合、Nginx でドメインを明示的に定義する必要があるかどうかです。それとも、SSL ハンドシェイクが失敗するなどして、このようになるのでしょうか。
アップデート:
Nginx 設定ファイル:
答え1
_
Johannes が言ったように、あなたは : まったく何もないの意味を誤解していると思いますserver_name
。ほとんどのガイドでは、名前付き仮想サーバーに干渉しないように、これをデフォルトのキャッチオール サーバーに含めています。
あなたが読んでいる内容で見逃しているはずのことは(あるいはあなたが読んでいる内容を書いた人が見逃しているかもしれませんが)、適切なデフォルト サーバーには、実際にディレクティブdefault_server
の一部としてオプションが含まれているということですlisten
。詳細については、nginx.org/r/listen を参照してください。
答え2
サーバー定義の順序によって異なる場合があります。_
は特別な名前ではなく、単に無効なドメインであるため、一致することはありません。つまり、 は、次のようなホストの他のサーバー定義のサーバー名と同じになりますstatic.def.com
。どちらも一致しません。まったく一致しない場合は、nginx は最初のサーバー定義を採用します。