Nginx

為什麼 Nginx 不拒絕錯誤的主機?

  • July 29, 2015

這是我的配置:

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為什麼沒有發生?

好的,這就是答案。必須將具有空的伺服器server_name聲明為“預設”伺服器。更多細節在這裡: http: //nginx.org/en/docs/http/ngx_http_core_module.html#server_name

Nginx,當HostHTTP頭不匹配任何servers時,進入預設的,這是第一個,如果沒有另外指定。這是有效的配置:

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

引用自:https://unix.stackexchange.com/questions/219094