nginx で host_name に該当する場合がないときにどの設定ファイルが参照されるのか

結論

一番最初に読み込んだ設定ファイル。

ドキュメント

nginx.org

具体的な状況例

host_name にたとえば foo.example.com bar.example.com などと設定しているところ、設定していない IPアドレス直打ち でアクセスされた場合に予想外のページが返ってしまった。

でも、いったいどれがどういう理屈で返ったのかが分からない。

対応方法

その1(推奨)

server_name_ (アンダースコア)を指定すると「全ての server_name」になるので、必ずこのファイルを含めるようにする。

なお、listen するポート番号が一致することも必要なので注意する。

その2

ファイル名の命名規則を作り、該当がない場合に返す設定ファイルのファイル名は _default.conf のようにほぼ必ずファイル名の並びが一番最初になるようなファイル名にする。

その上で、命名規則のチーム内浸透やレビュー等でしっかり守る。

Powered by はてなブログ