一、nginx如何選擇適當的虛擬伺服器來處理請求?(server匹配)
(1)基於主機名匹配來選擇合適的虛擬伺服器
對比請求頭中的host欄位與server中的server_name,選擇匹配的伺服器。如果都不匹配,則選擇該埠所對應預設的伺服器。如果沒有指定預設伺服器,默默為伺服器列表中的第乙個,可以通過listen port default_server來顯示指定。值得注意的是,預設伺服器是與監聽埠相關的,即每個埠都可以指定乙個預設伺服器。
server
}
如果希望不處理沒有指定host欄位的請求,可以通過如下方式來實現:
server
server_name也可以不指定,預設就是為「」,匹配沒有指定host的請求。
(2)基於ip 和 主機名來選擇合適的虛擬伺服器
首先按照ip、埠進行匹配,匹配通過的server,再按照主機名進行匹配。如果主機名不匹配,則由預設匹配該ip、埠的預設伺服器來進行處理。
server
}
server
}
二、nginx如何選擇合適的location來處理請求(location匹配)
location的匹配方式分兩種:a.根據路徑字首來匹配 b.根據正規表示式來匹配
匹配的原則是:首先檢測字首匹配的location,選擇有最大字首的location作為備用選項(備胎)。然後檢測正規表示式匹配的location,檢測順序與location排列順序一致,如果某項location匹配,則後續不再檢測。如果均不匹配,則使用最大字首匹配的location。
處理方式:對於靜態資源,比如/logo.jpg,則加上root指定的目錄,得到logo.jpg在檔案系統的位置 如/data/www/logo.jpg,返回客戶端。
對於指令碼index.php,請求會被傳遞給localhost:9090進行處理,傳遞的引數就是指令碼的位置 /data/www/index.php,執行完成後返回結果。
Nginx是如何處理請求的
基於命名的虛擬伺服器 name based virtual servers nginx首先要確定由哪個伺服器 server 來處理這個請求,如下面的簡單的例子中,一共有3個虛擬主機,分別是 server 其中 是區分大小寫的正規表示式 為不區分大小寫的正規表示式 為了提高效率,實行嚴格匹配,如果找到...
Nginx是如何處理Request的?
nginx是如何匹配過來的請求,然後做處理的呢?這個匹配的過程可以分為兩步 1.選擇server 2.選擇location 選擇server 僅僅匹配server name 加入nginx的配置檔案有這麼幾項 server server server 在上面配置檔案中,nginx僅僅匹配server...
php fpm 是如何處理php 請求的
php fpm php fastcgi process manager php fastcgi 程序管理器,管理php 程序池的軟體,用於接受web伺服器的請求。用來管理程序。比如 當worker不夠用時,master可以根據配置預先啟動幾個worker等著 當然空閒worker太多時,也會停掉一些...