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을 추가 할 필요는 없습니다. 절대 일치하지 않기 때문입니다).