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
為什麼沒有發生?
好的,這就是答案。必須將具有空的伺服器
server_name
聲明為“預設”伺服器。更多細節在這裡: http: //nginx.org/en/docs/http/ngx_http_core_module.html#server_nameNginx,當
Host
HTTP頭不匹配任何server
s時,進入預設的,這是第一個,如果沒有另外指定。這是有效的配置: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; }