default_server
nginx.conf
server {
listen 80 default_server; # <-この設定値
server_name example.org www.example.org;
...
}まず Host ヘッダを検査してどのserverにルーティングするかを決める。
Host ヘッダがどのserver_nameともマッチしない場合、または Host ヘッダが含まれていない場合はデフォルトサーバーに振り分ける。
デフォルトサーバーは一番上に書いたserverか、listen ディレクティブの default_server を使って明示的に指定することもできる。
Host ヘッダがマッチしないリクエストがデフォルトサーバーで処理されるというのを最初知らなくて、なぜ処理できているのか疑問だった。
Host ヘッダがマッチしないリクエストを処理させたくない場合は、リクエストをドロップさせるデフォルトサーバを設定する。
server {
listen 80;
server_name "";
return 444;
}