Nginxが間違ったホストを拒否しないのはなぜですか?

Nginxが間違ったホストを拒否しないのはなぜですか?

私の設定は次のとおりです。

upstream beta {     
  server localhost:49213;
}
server {     
  listen 80;
  server_name beta.example.com;
  location / {
    proxy_pass http://beta;     
  }   
}
server {
  listen 80;
  server_name "";
  return 444;
}

開いてみるとlocalhost:80内容も見えましたねlocalhost:49213。私はそれが正しいとは思わない。 NginxはHTTPヘッダーを持たないすべての要求を拒否する必要がありますbeta.example.comHostそうですか?なぜそのようなことが起こらなかったのですか?

答え1

さて、それは答えです。 null を持つサーバーはserver_name「デフォルト」サーバーとして宣言する必要があります。詳しくはこちらをご覧ください。http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name

Nginxでは、HostHTTPヘッダーがどのsとも一致しない場合、特に指定しない限り、最初のヘッダーであるserverデフォルトヘッダーが使用されます。これは有効な構成です。

upstream beta {     
  server localhost:49213;
}
server {     
  listen 80;
  server_name beta.example.com;
  location / {
    proxy_pass http://beta;     
  }   
}
server {
  listen 80 default_server; # pay attention!
  server_name "";
  return 444;
}

関連情報