参考:nginxがリクエストをどのように処理するか 日本語訳
nginx.conf
serverの基本的な設定
listenディレクティブ内のdefault_server
パラメータを使って、どのサーバがデフォルトかを明示的に設定することができる。
hogehoge.net www.hogehoge.netが優先される。
server {
listen 80;
server_name hogehoge.net www.hogehoge.net;
...
}
server {
listen 80 default_server;
server_name poyopoyo.net www.poyopoyo.net;
root /var/www/src/public;
}
nginx は、(ブラウザからの)HTTP リクエストの “Host” ヘッダだけを考査して、そのリクエストをどのサーバに振り向けるべきかを決定する。もし “Host” ヘッダがどのサーバ名ともマッチしない場合やリクエストにこのフィールドが全く含まれていない場合は、listen ディレクティブに default_serverの設定があるパラメータに振り分けられる。上記2つの設定があるが、どちらにもマッチしない場合はlistenにdefault_server
の記述がある方に向けられる。
サーバ名未定義のリクエスト処理をドロップする
server {
listen 80 default_server;
server_name hogehoge.net www.hogehoge.net;
...
}
server {
listen 80;
server_name poyopoyo.net www.poyopoyo.net;
root /var/www/src/public;
}
server {
listen 80 default_server;
server_name _;
return 444;
}
どこにも合わない場合は3つ目のdefault_server設定にリクエストがむく。server_name _;
なので接続せずドロップ・アウトする。かつ、444を返す(444は接続を閉じる nginxのコード )
server_name _;の参考:
Laravelプロジェクトをdeployerを使ってEC2にデプロイする