Nginx 實現域名綁定

生產環境利用nginx對後端服務器進行反向代理和負載均衡,再把外網域名解析到nginx的vip地址,這樣在外網可以通過域名訪問WEB服務。但是如果不對域名進行綁定的話,用戶通過ping域名拿到IP地址,通過IP地址也可以直接訪問到WEB服務,這一點不符合國家的政策法規。本文介紹如何利用nginx實現域名綁定,禁止用戶通過IP地址直接訪問WEB服務

利用nginx的default_server可以很容易地實現該功能:

上述nginx配置中有兩個server都監聽了1.1.1.1地址的80端口,第一個server設置爲default_server, server_name爲任意域名;第二個server域名設置爲mydomain.com. 當http請求到達nginx時,如果是通過mydomain.com訪問的(header中Host字段爲mydomain.com),則該請求會匹配到第二個server, 由該server進行處理,否則由第一個default server進行處理,default server直接返回403禁止訪問狀態碼。

上述配置中,不是通過mydomain.com訪問nginx, 會直接返回403的狀態碼, 返回頁面爲nginx默認的403錯誤頁面,如下圖所示:

 

如果需要替換這個默認的靜態的403頁面,可以把default server配置成一個靜態的server, 請求匹配到該server時直接返回一個自定義的403頁面,nginx配置如下所示:

這樣不通過mydomain.com訪問nginx,就可以返回自定義的403錯誤頁面了:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章