
내 구성은 다음과 같습니다.
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에서는 Host
HTTP 헤더가 어떤 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;
}