잘못된 호스트 헤더가 설정된 요청을 어떻게 차단할 수 있습니까? nginx를 사용하여

nginx를 사용하여 웹 사이트를 제공합니다. 내 사이트의 도메인과 일치하지 않는 HTTP “호스트”헤더와 함께 들어오는 모든 요청을 차단하고 싶습니다.

좀 더 구체적으로, 내 nginx.conf에는 다음 두 서버 블록이 포함되어 있습니다.

server {
    # Redirect from the old domain to the new domain; also redirect
    # from www.newdomain.com to newdomain.com without the "www"
    server_name www.olddomain.com olddomain.com www.newdomain.com;
    listen 80;
    return 301 $scheme://newdomain.com$request_uri;
}

server {
    server_name newdomain.com localhost;
    listen 80;

    # Actual configuration goes here...
}

호스트가 www.olddomain.com, olddomain.com, www.newdomain.com 또는 newdomain.com이 아닌 트래픽을 차단 (즉, 444 상태 코드로 “반환”)하고 싶습니다. 어떻게해야합니까?



답변

기본 서버 정의

기본 서버를 명시 적으로 정의하지 않으면 nginx는 암시 적으로 첫 번째로 찾은 server를 사용합니다 . 알 수없는 호스트를 차단하는 서버 블록을 만드십시오 .

server {
  listen 80 default_server;
  return 444;
}

(server_name을 추가 할 필요는 없습니다. 절대 일치하지 않기 때문입니다).