nginx 阻止對未綁定域名的訪問

當請求走進 nginx 時,會依次匹配每一個 server 和 location 塊。
當某個請求訪問了未綁定的 server_name,由於每個 server 和 location 都訪問不上,就會默認選擇第一個,下面舉例說明:

nginx配置文件節選

server {
	location {
		server_name a.example.com;
		index index.html;
	}
	location {
		server_name b.example.com;
		index index.html;
	}
}

當請求訪問的地址是 c.example.com 的時候會發生什麼?
答案是請求匹配到了 a.example.com。

所以爲了阻止這種情況的發生,可以配置一個默認的 server 塊用於阻止非法請求:

server {
	listen 80;
	listen 443;
	return 444;
}
server {
	location {
		server_name a.example.com;
		index index.html;
	}
	location {
		server_name b.example.com;
		index index.html;
	}
}

另外,你還可以通過先顯式指定 default_server 的方式:

server {
	listen 80 default_server;
	listen 443 default_server;
	return 444;
}

這樣你就不必依賴 server 塊配置的順序了,推薦

發佈了108 篇原創文章 · 獲贊 15 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章