日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Ngnix處理http請求流程

nginx處理http的請求是nginx最重要的職能,也是最復(fù)雜的一部分,下面為大家簡單介紹一下Ngnix處理http請求流程。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計與策劃設(shè)計,渾江網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:渾江等地區(qū)。渾江做網(wǎng)站價格咨詢:18980820575

一、基于名稱的虛擬服務(wù)器

nginx首先確定哪個服務(wù)器應(yīng)處理該請求。讓我們從一個簡單的配置開始,其中所有三個虛擬服務(wù)器都在端口*:80上偵聽:

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;
...
}

在此配置中,nginx僅測試請求的header字段“host”以確定應(yīng)將請求路由到哪個服務(wù)器。如果其值與任何服務(wù)器名稱都不匹配,或者請求根本不包含此header字段,則nginx會將請求路由到該端口的默認(rèn)服務(wù)器。在上面的配置中,默認(rèn)服務(wù)器是第一個服務(wù)器-這是nginx的標(biāo)準(zhǔn)默認(rèn)行為。還可以使用listen指令中的default_server參數(shù)來顯式設(shè)置哪個服務(wù)器應(yīng)為默認(rèn)服務(wù)器:

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

自0.8.21版以后的版本,default_server參數(shù)已可用。在早期版本中,應(yīng)改用默認(rèn)參數(shù)。

請注意,默認(rèn)服務(wù)器是偵聽端口的屬性,而不是服務(wù)器名稱的屬性。稍后再詳細(xì)介紹。

二、如何阻止使用未定義的服務(wù)器名稱的http請求

如果不允許不帶“主機(jī)”header字段的請求,則可以定義僅丟棄請求的服務(wù)器:

server {
listen 80
server_name ””;
return 444;
}

在這里,服務(wù)器名稱設(shè)置為空字符串,該字符串將與沒有“ Host”header字段的請求進(jìn)行匹配,并返回特殊的nginx的非標(biāo)準(zhǔn)代碼444,以關(guān)閉連接。

從版本0.8.48開始,這是服務(wù)器名稱的默認(rèn)設(shè)置,因此可以省略server_name“”。在早期版本中,計算機(jī)的主機(jī)名用作默認(rèn)服務(wù)器名。

三、基于名稱和IP地址混合的虛擬服務(wù)器

讓我們看一個更復(fù)雜的配置,其中一些虛擬服務(wù)器偵聽不同的地址:

server {
listen 192.168.1.1:80;
server_name example.org www.example.org;
...
}

server {
listen 192.168.1.1:80;
server_name example.net www.example.net;
...
}

server {
listen 192.168.1.2:80;
server_name example.com www.example.com;
...
}

在這種配置中,nginx首先根據(jù)服務(wù)器塊的偵聽指令測試請求的IP地址和端口。然后,它根據(jù)與IP地址和端口匹配的服務(wù)器塊的server_name條目測試請求的“主機(jī)”header字段。如果找不到服務(wù)器名稱,則默認(rèn)服務(wù)器將處理該請求。例如,在192.168.1.1:80端口上收到的對www.example.com的請求將由192.168.1.1:80端口的默認(rèn)服務(wù)器(即第一臺服務(wù)器)處理,因為沒有www.example.com為此端口定義。

如前所述,默認(rèn)服務(wù)器是偵聽端口的屬性,并且可以為不同的端口定義不同的默認(rèn)服務(wù)器:

server {
listen 192.168.1.1:80;
server_name example.org www.example.org;
...
}

server {
listen 192.168.1.1:80 default_server;
server_name example.net www.example.net;
...
}

server {
listen 192.168.1.2:80 default_server;
server_name example.com www.example.com;
...
}

四, 一個簡單的PHP站點配置

現(xiàn)在,讓我們看看nginx如何選擇一個位置來處理典型的簡單PHP網(wǎng)站的請求:

server {
listen 80
server_name example.org www.example.org;
root      /data/www;

location / {
index index.html index.php;
}

location ~* \。(gif | jpg | png)$ {
expires 30d;
}

location ~\ .php $ {
fastcgi_pass  localhost:9000;
fastcgi_param SCRIPT_FILENAME
$ document_root $ fastcgi_script_name;
include      fastcgi_params;
}
}

無論列出的順序如何,nginx首先搜索文字字符串給定的最特定的前綴位置。在上面的配置中,唯一的前綴位置是“/”,并且由于它匹配任何請求,因此將被用作最后的手段。然后,nginx按照配置文件中列出的順序檢查由正則表達(dá)式指定的位置。第一個匹配的表達(dá)式將停止搜索,nginx將使用此位置。如果沒有正則表達(dá)式與請求匹配,則nginx使用較早發(fā)現(xiàn)的最特定的前綴位置。

請注意,所有類型的位置僅測試沒有參數(shù)的請求行的URI部分。這樣做是因為查詢字符串中的參數(shù)可以通過幾種方式給出,例如:

/index.php?user=john&page=1
/index.php?page=1&user=john

此外,任何人都可以在查詢字符串中請求任何內(nèi)容:

/index.php?page=1&something+else&user=john

現(xiàn)在,讓我們看一下在以上配置中如何處理請求:

請求“/logo.gif”, 首先與前綴位置“/”匹配,然后與正則表達(dá)式“.(gif | jpg | png)$”匹配,因此由后一個位置處理。使用指令“root /data/www”將請求映射到文件/data/www/logo.gif,然后將文件發(fā)送給客戶端。

請求“/index.php”, 也首先與前綴位置“/”匹配,然后與正則表達(dá)式“.(php)匹配。因此,它由后一個位置處理,并將請求傳遞到在:上偵聽的服務(wù)器。指令將參數(shù)設(shè)置為,然后服務(wù)器執(zhí)行該文件。變量document_root等于root指令的值,變量$fastcgi_script_name等于請求URI,即“/index.php”。

請求“/about.html”僅與前綴位置“/”匹配,因此在該位置進(jìn)行處理。使用指令“root /data/www”將請求映射到文件/data/www/about.html,然后將文件發(fā)送給客戶端。

處理請求“/”更為復(fù)雜。它僅與前綴位置“/”匹配,因此由該位置處理。然后,index指令根據(jù)其參數(shù)和“root /data/www”指令對索引文件的存在進(jìn)行測試。如果文件/data/www/index.html不存在,文件/data/www/index.php存在,則該指令將內(nèi)部重定向到“/index.php”,并且nginx再次搜索位置如果請求是由客戶端發(fā)送的。如前所述,重定向的請求最終將由FastCGI服務(wù)器處理。


本文名稱:Ngnix處理http請求流程
當(dāng)前地址:http://m.5511xx.com/article/cdopegp.html