亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Nginx配置淺析

娣辯孩 / 1255人閱讀

摘要:選擇以結(jié)尾的進(jìn)行匹配,并優(yōu)先選擇最長(zhǎng)的。排序?qū)ζヅ溥^(guò)程也有一定的影響,因?yàn)樵谄ヅ涞阶铋L(zhǎng)最精確的之后就會(huì)停止匹配。將所有非正則表達(dá)式的與請(qǐng)求的進(jìn)行對(duì)比。結(jié)束當(dāng)前的指令。返回一個(gè)狀態(tài)碼為的永久重定向。

Nginx是Igor Sysoev用C語(yǔ)言編寫的一個(gè)web服務(wù)器,通常用于負(fù)載均衡、反向代理和HTTP緩存等。Nginx用異步的事件驅(qū)動(dòng)(event-driven)的方式來(lái)處理請(qǐng)求,因此負(fù)載能力很強(qiáng)。

Nginx使用Block(如 server block, location block)來(lái)組成配置文件的層級(jí)結(jié)構(gòu),并在接收到客戶端請(qǐng)求之后根據(jù)請(qǐng)求的域名(domain name)端口(port),IP地址判斷處理該請(qǐng)求的server block,然后根據(jù)請(qǐng)求的資源URI決定處理該請(qǐng)求的location block

Server Block

管理員可以定義多個(gè)server block作為不相關(guān)的虛擬web服務(wù)器實(shí)體,然后通過(guò)listenserver_name決定處理請(qǐng)求的server block

listen指令

Nginx首先會(huì)檢查請(qǐng)求的IP地址和端口,并根據(jù)所有server block建立一個(gè)列表來(lái)處理請(qǐng)求。每個(gè)server block中的listen定義了這個(gè)server block能處理的IP和端口(root用戶運(yùn)行默認(rèn)為0.0.0.0:80,非root用戶運(yùn)行的為0.0.0.0:8080)

listen后可以指定:

IP:port的IP地址和端口

僅IP(端口將默認(rèn)為80)

僅port,將監(jiān)聽(tīng)所有接口的這個(gè)port

到某個(gè)Unix socket的路徑(在服務(wù)器間轉(zhuǎn)發(fā)請(qǐng)求的時(shí)候會(huì)用到)

在將listen的值與請(qǐng)求進(jìn)行匹配之前,Nginx會(huì)先將listen的值中所缺省的部分補(bǔ)充完整。然后將優(yōu)先匹配準(zhǔn)確的IP,如果不存在完全準(zhǔn)確匹配的IP才會(huì)匹配到0.0.0.0,如果有多個(gè)IP:port匹配度相同,Nginx將會(huì)繼續(xù)檢查server_name

server_name指令

Nginx將server_name與請(qǐng)求頭中的Host進(jìn)行匹配,匹配的順序:

優(yōu)先選擇第一個(gè)精確匹配到的block。

server {
    listen 80;
    server_name host.example.com;
    ...
}

選擇以*開(kāi)頭的進(jìn)行匹配,并優(yōu)先選擇最長(zhǎng)的。

server {
    listen 80;
    server_name *.example.com;
    ...
}

選擇以*結(jié)尾的進(jìn)行匹配,并優(yōu)先選擇最長(zhǎng)的。

server {
    listen 80;
    server_name www.example.*;
    ...
}

選擇以~開(kāi)頭的用正則表達(dá)式進(jìn)行匹配,并優(yōu)先選擇第一個(gè)。

server {
    listen 80;
    server_name ~^(www|host).*.example.com$;
    ...
}

如果以上規(guī)則都無(wú)法匹配,則選擇default_server定義的默認(rèn)的server_block(每個(gè)server_block只能有一個(gè)default_server),默認(rèn)的default_serverlocalhost

server {
    listen 80 default_server;
    server_name _;
    ...
}

Location Block

location blockserver block的一部分,決定了如何處理請(qǐng)求的URI,格式:

location [modifier] location_match {
    ...
}
modifier

modifier是一個(gè)可選的參數(shù),決定了如何解析后面的location match,modifier可選的值有:

(none)

前綴匹配, 如

location /site {
    ...
}

將匹配以/site開(kāi)頭的URI

=(equal sign)

完整匹配,如

location = /page {
    ...
}

將匹配/page,而不會(huì)響應(yīng)/page/index.html的請(qǐng)求

~(tilde)

大小寫敏感的正則匹配, 如

location ~ .(jpe?g|png|gif|ico)$ {
...
}

將匹配以.jpg/.jpeg/.png/.gif/.ico結(jié)尾的URI, 但不會(huì)響應(yīng).JPG

~*(tilde + asterisk)

大小寫無(wú)關(guān)的正則匹配, 如

location ~* .(jpe?g|png|gif|ico)$ {
    ...
}

.jpg.JPG都會(huì)匹配

^~(carat + tilde)

非正則匹配,如

location ^~ /page {
    ...
}

能夠匹配/page/index.html

匹配順序

Nginx優(yōu)先選擇正則表達(dá)式進(jìn)行匹配,但是使用=^~這兩個(gè)modifier可以覆蓋這一特性。排序?qū)ζヅ溥^(guò)程也有一定的影響,因?yàn)镹ginx在匹配到最長(zhǎng)最精確的location之后就會(huì)停止匹配。

將所有非正則表達(dá)式的location_match與請(qǐng)求的URI進(jìn)行對(duì)比。

modifier=的進(jìn)行完整匹配。

選擇最長(zhǎng)location_match前綴進(jìn)行匹配,如果modifier^~則匹配成功。

進(jìn)行正則表達(dá)式匹配

用其他前綴匹配

其他指令

index

語(yǔ)法:index file ...; 默認(rèn)為index index.html;

index指令指定了被作為index的文件,比如上面的index.html

但是在下面這種情況下,對(duì)/index.html的請(qǐng)求將會(huì)被第二個(gè)location block處理,因?yàn)榈谝粋€(gè)與/index.html并不是完全匹配。

location = / {
    index index.html;
}

location / {
    ...
}

try_files

root /var/www/main;
location / {
    try_files $uri $uri.html $uri/ /fallback/index.html;
}

location /fallback {
    root /var/www/another;
}

對(duì)/page的請(qǐng)求將會(huì)首先進(jìn)入第一個(gè)location, 然后嘗試在/var/www/main 下依次查找page, page.html, page/,如果都沒(méi)有找到的話將會(huì)被重定向到/fallback/index.html,并由第二個(gè)location提供/var/www/another/fallback/index.html

rewrite

通過(guò)Perl兼容的正則表達(dá)式改變請(qǐng)求的URI,語(yǔ)法:rewrite regex replacement [flag];

flag的值可以是:

last

結(jié)束當(dāng)前的rewrite指令,并用修改過(guò)的URI去匹配其他的location block。

break

結(jié)束當(dāng)前的rewrite指令。

redirect

當(dāng)替換的URI(replacement)不以 “http://”, “https://”, “$scheme”開(kāi)頭時(shí)進(jìn)行狀態(tài)碼為302的暫時(shí)性的重定向。

permanent

返回一個(gè)狀態(tài)碼為301的永久重定向。

error_page

root /var/www/main;

location / {
    error_page 404 /another/whoops.html;
}
 
location /another {
    root /var/www;
}

除了/another之外的請(qǐng)求都會(huì)在/var/www/main查找請(qǐng)求的資源,如果沒(méi)有找到相關(guān)資源將會(huì)重定向到/another/whoops.html,由第二個(gè)location block處理,查找/var/www/another/whoops.html

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/40550.html

相關(guān)文章

  • Nginx源碼分析】Nginx中http2淺析

    摘要:主要涉及到的協(xié)議以及的處理流程。并且中必須建立在協(xié)議之上。所以對(duì)協(xié)議的服務(wù)發(fā)起請(qǐng)求時(shí),一般瀏覽器會(huì)建立條連接,并行的去請(qǐng)求不同的資源。表明該字段是否使用了編碼。 運(yùn)營(yíng)研發(fā) 張仕華 本文通過(guò)一個(gè)小例子串一遍nginx處理http2的流程。主要涉及到http2的協(xié)議以及nginx的處理流程。 http2簡(jiǎn)介 http2比較http1.1主要有如下五個(gè)方面的不同: 二進(jìn)制協(xié)議 http1....

    孫吉亮 評(píng)論0 收藏0
  • 【整理總結(jié)】負(fù)載均衡淺析

    摘要:負(fù)載均衡算法輪詢,加權(quán)輪詢。參考三負(fù)載均衡負(fù)載均衡由服務(wù)提供廠商提供。之后,集群內(nèi)再采用其他的負(fù)載均衡方案。參考五負(fù)載均衡工作在層,它會(huì)與分別建立連接,需要維護(hù)這兩個(gè)連接的狀態(tài)。 運(yùn)營(yíng)研發(fā)團(tuán)隊(duì) 施洪寶 一. 基礎(chǔ)知識(shí) 1.1 基礎(chǔ) 什么是負(fù)載均衡? 當(dāng)單機(jī)提供的并發(fā)量不能滿足需求時(shí),我們需要多臺(tái)服務(wù)器同時(shí)服務(wù)。當(dāng)客戶請(qǐng)求到達(dá)時(shí),如何為客戶選擇最合適的服務(wù)器?這個(gè)問(wèn)題就是負(fù)載均衡問(wèn)題。...

    idealcn 評(píng)論0 收藏0
  • 淺析微信支付:如何使用沙箱環(huán)境測(cè)試

    摘要:本文是淺析微信支付系列文章的第十篇,主要講解如何使用沙箱環(huán)境來(lái)測(cè)試微信支付。圖為微信支付仿真測(cè)試系統(tǒng)后簡(jiǎn)稱仿真系統(tǒng)的簡(jiǎn)化原理圖。沙箱說(shuō)明微信支付沙箱環(huán)境,是提供給微信支付商戶的開(kāi)發(fā)者,用于模擬支付及回調(diào)通知。 本文是【淺析微信支付】系列文章的第十篇,主要講解如何使用沙箱環(huán)境來(lái)測(cè)試微信支付。 淺析微信支付系列已經(jīng)更新十篇了喲~,沒(méi)有看過(guò)的朋友們可以看一下。 淺析微信支付:下載對(duì)賬單和資...

    騫諱護(hù) 評(píng)論0 收藏0
  • 淺析PHP的輸出緩沖控制

    摘要:默認(rèn)為是一個(gè)回調(diào)函數(shù),將腳本的所有輸出,用所定義的函數(shù)進(jìn)行處理。在輸出緩沖區(qū)的回調(diào)函數(shù)中使用這些函數(shù),會(huì)導(dǎo)致未定義的錯(cuò)誤。 簡(jiǎn)介 PHP有輸出時(shí),可以用輸出控制函數(shù)來(lái)控制輸出 緩沖階段 ob_start(),將內(nèi)部緩沖區(qū)(buffer)打開(kāi)。當(dāng)PHP遇到echo,printf等輸出語(yǔ)句時(shí), PHP就會(huì)將要輸出的數(shù)據(jù)放入緩沖區(qū)(buffer)中,等待輸出。而只有當(dāng)緩沖區(qū)滿了或者php運(yùn)行...

    wangjuntytl 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<