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.com. Host그렇죠? 왜 그런 일이 일어나지 않았습니까?

답변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;
}

관련 정보