Nginxに含まれる構成ファイルの順序は固定ですか、それともランダムですか?Apache は、ワイルドカード文字がアルファベット順に展開されることを明示的に述べています。Nginxではこれは当てはまらないようで、マニュアルにはそれについて何も書かれていません。
私のセットアップで20_example.com
は、以前に含まれて00_default
いましたが、共有ディレクティブ(ログ形式など)を定義するという私の目的を無効にします。
Nginxに含まれる構成ファイルの順序は固定ですか、それともランダムですか?Apache は、ワイルドカード文字がアルファベット順に展開されることを明示的に述べています。Nginxではこれは当てはまらないようで、マニュアルにはそれについて何も書かれていません。
私のセットアップで20_example.com
は、以前に含まれて00_default
いましたが、共有ディレクティブ(ログ形式など)を定義するという私の目的を無効にします。
回答:
AD7sixの答えは完全に正しいものではありません。順序は、2つのサーバーブロックが同じ「特異性」を持つ場合、たとえば両方がserver_nameで正規表現を使用し、着信要求が両方に一致する場合にも重要です。
server {
server_name ~^(www\.)?(?<domain>foo\.com|bar\.com|baz\.com)$;
...
}
そして
server {
server_name ~^(www\.)?(?<domain>.+)$;
...
}
このシナリオでは、2つのサーバーブロックを2つのファイルに分散させることはできません。順序が保証されないためです。
OPはlog_formatの順序を指摘しているので、カスタムlog_formatsの場合、両方のタイプのファイル、log_formatsを含むファイル、log_formatsを使用するサーバーブロックを含むファイルを同じdirに配置すると、結果は非常に再現性のない構成。
手作りのnginxファームを最初に人形に移動した職場では、2つの/ etc / nginx / *を持っているなどの多くの奇妙な状況をデバッグした後、同一のハードウェア/セットアップでいくつかのnginxインストールが最初から失敗することがわかりましたr)md5matchと同じバイナリで異なる結果(1つで無効なlog_formatエラーが発生し、他の作業が行われる)を使用して、log_formatなどの一部のディレクティブで実際に順序が非常に重要になる難しい方法を学びました。
サーバーブロックをconf.d / *からconf.d / *の後に含まれる別のフォルダーに移動するだけで問題を修正しました。