当社では、NGINX で複数のサイトをホストするアーキテクチャを採用しています。各 NGINX サイトには独自の構成があります。これらの各サイトは共通のコードベースを指していますが、異なるドメイン名とそれに関連付けられた SSL を指しています。
私たちがやりたいのは、メンテナンス中に、ページがリクエストされたら共通の Maintenance.html ページを表示することです。各 Web サイトの website.conf ファイルにアクセスして書き換えルールを挿入することはできますが、これは完全な解決策ではなく、私たちが避けようとしているハックのようなものです。
これをルート レベルの nginx.conf ファイルに実装し、(443) 経由で入ってくるリクエストはすべて (独自の設定ファイルが読み込まれる前に) インターセプトされ、共通の Maintenance.html ページにリダイレクトされるようにします。
これを nginx.conf ファイル レベルで実現するにはどうすればよいでしょうか?
ありがとう
答え1
すべてのホストを一度編集すれば (これらが作成されたテンプレートも忘れずに編集してください)、その後はすべてを編集する必要がなくなります。
たとえば、「all_vhosts_override」という名前を付けることができる空のファイルを作成します。include "all_vhosts_override";
各 vhost 定義の先頭近く、すべてのエントリの上にlocation
追加しますalias
。
すべての vhost で一度に何かをオーバーライドする必要がある場合は、そのファイルにステートメントを追加して nginx をリロードします。すべての vhost はこの 1 つのファイルから構成を受け取るため、個々の構成を更新する必要はありません。メンテナンスが完了したら、オーバーライド ファイルを空にして再度リロードするだけです。