NGINX 如何遮蔽未被定義的虛擬主機的訪問

安全劍客發表於2020-11-25
NGINX 如何遮蔽未被定義的虛擬主機的訪問,搞清楚  nginx 虛擬主機匹配規則, 那麼就可以在預設的虛擬主機裡 遮蔽未被定義的虛擬主機訪問

NGINX 如何遮蔽未被定義的虛擬主機的訪問NGINX 如何遮蔽未被定義的虛擬主機的訪問

nginx 的預設虛擬主機

Nginx 支援基於域名和埠的虛擬主機(virtual host), 根據獲取的  $host 和  $server_port 將請求分配給對應的虛擬主機.

而如果一個請求被解析到 webserver, 但是並未配置其對應的虛擬主機, 則會將請求轉發給  預設虛擬主機(default server).

預設虛擬主機可以使用 default_server 指定, 比如:

server {
    listen      80 default_server;
    server_name example.net 
    ...
}

 

而如果沒有使用定義,則用  第一個虛擬主機 的規則處理請求. 比如是 nginx.conf 的第一個虛擬主機, 或者是 conf.d 內 排序第一個 的配置檔案的  第一個虛擬主機 的規則處理請求.

比如, nginx.conf 配置檔案內沒有配置虛擬主機, 而是都包含在 conf.d, 在 conf.d 下有: a.conf, b.conf, c.conf... 則處理請求的規則是 a.conf 中定義的第一個 虛擬主機.

遮蔽未被定義的虛擬主機訪問

搞清楚 nginx 虛擬主機匹配規則, 那麼就可以在預設的虛擬主機裡遮蔽未被定義的虛擬主機訪問.

server {
    listen      80 default_server;
    server_name "";
    return      444;}server {
    listen      80;
    server_name example.org 
    ...}server {
    listen      80;
    server_name example.net 
    ...}

 

這樣, 就可以將未被定義的虛擬主機訪問遮蔽掉. 主要應用是遮蔽用 IP 地址訪問 WebServer.

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2736706/,如需轉載,請註明出處,否則將追究法律責任。

相關文章