當請求到達nginx伺服器之時 如果我們配置檔案如下
server {
listen 80;
server_name example.org www.example.org;
...
}
server {
listen 80;
server_name example.net www.example.net;
...
}
server {
listen 80;
server_name example.com www.example.com;
...
}
1.nginx首先會根據請求資訊中的Host進行匹配server_name,選擇對應的server
2.如果請求中Host欄位沒有域名形式(即ip形式的訪問網站,如:輸入127.0.0.1 訪問),那麼nginx預設選擇第一個server
3.也可以在listen 加入default_server
標明預設虛擬服務 ( listen 80 default_server
),那麼如果找不到
server_name ,ngnix會預設選中這個server
如果想匹配不到server_name 後返回錯誤資訊,可新增如下server配置
server {
listen 80;
server_name ``;
return `404`
}
還一種配置如下 listen 為ip:port
server {
listen 192.168.0.1:80
server_name example.org *.example.org
...
}
server {
listen 192.168.0.1:80
server_name example.net *.example.net
...
}
server {
listen 192.168.0.2:80
server_name example.com *.example.com
...
}
那麼nginx會首先選擇匹配listen 一致的,然後再根據Host來匹配server_name,如果匹配不到,可以進行如上預設設定