欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Nginx中Location配置超詳細(xì)講解

 更新時(shí)間:2023年01月09日 09:25:04   作者:蹲街式等待  
最近一直在做location 配置,遇到優(yōu)先級(jí)別問題(如果配置不當(dāng)可能存在安全隱患哦),下面這篇文章主要給大家介紹了關(guān)于Nginx中Location配置的相關(guān)資料,需要的朋友可以參考下

一、語法

Location 是 Nginx 中一個(gè)非常核心的配置,關(guān)于Location,舉個(gè)簡(jiǎn)單的配置例子:

server {
    listen 80;
    server_name 10.0.7.115;
    location / {
        root /data/app/;
        index index.html;
    }
}

當(dāng)訪問 http://10.0.7.115:80 的時(shí)候,返回的是 /data/app/index.html 文件。

Location具體語法:

location [ = | ~ | ~* | ^~ ] uri { ... }

重點(diǎn)看方括號(hào)中的 [ = | ~ | ~* | ^~ ],其中 | 分隔的內(nèi)容表示你可能會(huì)用到的語法,其中:

= 表示精確匹配:

location = /test {
    return 200 "hello";
}

例如:

/test              ok
/test/             not ok
/test2             not ok
/test/2            not ok

~ 表示區(qū)分大小寫的正則匹配:

location ~ ^/test$ {
    [configuration] 
}

例如:

/test              ok
/Test              not ok
/test/             not ok
/test2             not ok

~* 表示不區(qū)分大小寫的正則匹配:

location ~* ^/test$ {     
    [configuration] 
}

例如:

/test               ok
/Test               ok
/test/              not ok
/test2              not ok

^~ 表示 uri 以某個(gè)字符串開頭:

location ^~ /images/ {    
    [configuration] 
}

例如:

/images/1.gif        ok

/ 表示通用匹配:

location / {     
    [configuration] 
}

例如:

/index.html           ok
location /test {
    [configuration] 
}

例如:

/test                 ok
/test2                ok
/test/                ok

二、匹配順序

Location的定義分為兩種:

  • 前綴字符串(prefix string)
  • 正則表達(dá)式(regular expression),具體為前面帶 ~* 和 ~ 修飾符

當(dāng)存在多個(gè) Location 的時(shí)候,匹配的順序?yàn)椋?/strong>

檢查使用前綴字符串的 locations,在使用前綴字符串的 locations 中選擇最長(zhǎng)匹配的,并將結(jié)果進(jìn)行儲(chǔ)存;

  • 如果符合帶有 = 修飾符的URI,則立刻停止匹配;
  • 如果符合帶有 ^~ 修飾符的URI,則也立刻停止匹配;
  • 然后按照定義文件的順序,檢查正則表達(dá)式,匹配到就停止;
  • 當(dāng)正則表達(dá)式匹配不到的時(shí)候,使用之前儲(chǔ)存的前綴字符串;

總結(jié):

在順序上:

  • 前綴字符串順序不重要,按照匹配長(zhǎng)度來確定;
  • 正則表達(dá)式則按照定義順序;

在 優(yōu)先級(jí)上:

  • = 修飾符最高,^~ 次之,再者是正則,最后是前綴字符串匹配。

我們舉幾個(gè)簡(jiǎn)單的例子進(jìn)行說明

請(qǐng)求URI如下:

/document

示例一:

配置:

server {
    location /doc {
        [ configuration A ] 
    }
    location /docu {
        [ configuration B ] 
    }
}

匹配結(jié)果:

configuration B

注:雖然 /doc 也能匹配到,但 在順序上,前綴字符串順序不重要,按照匹配長(zhǎng)度來確定。

示例二:

server {
    location ~ ^/doc {
        [ configuration A ] 
    }
    location ~ ^/docu {
        [ configuration B ] 
    }
}

匹配結(jié)果:

configuration A

注:雖然 ~ ^/docu 也能匹配到,但 正則表達(dá)式則按照定義順序。

示例三:

server {
    location ^~ /doc {
        [ configuration A ] 
    }
    location ~ ^/docu {
        [ configuration B ] 
    }
}

匹配結(jié)果:

configuration A

注:雖然 ~ ^/docu 也能匹配到,但 ^~優(yōu)先級(jí)更高。

示例四:

server {
    location /document {
        [ configuration A ] 
    }
    location ~ ^/docu {
        [ configuration B ] 
    }
}

匹配結(jié)果:

configuration B

注:雖然 /document 也能匹配到,但 正則的優(yōu)先級(jí)更高。

三、root 與 alias 的區(qū)別

當(dāng)我們這樣設(shè)置 root 的時(shí)候:

location /i/ {
    root /data/w3;
}

當(dāng)請(qǐng)求 /i/top.gif,/data/w3/i/top.gif 會(huì)被返回。

當(dāng)我們這樣設(shè)置 alias 的時(shí)候:

location /i/ {
    alias /data/w3/images/;
}

當(dāng)請(qǐng)求 /i/top.gif,/data/w3/images/top.gif 會(huì)被返回。

兩者的區(qū)別:

  • root 是直接拼接 root + location;
  • alias 是用 alias 替換 location

四、server 和 location 中的 root

server 和 location 中都可以使用 root,舉個(gè)例子:

server {
    listen 80;
    server_name 10.0.7.115;
        root /data/app/;
        location / {
          root /data/web/;
          index index.html;
    }
}

如果兩者都出現(xiàn),是怎樣的優(yōu)先級(jí)呢?

簡(jiǎn)單的來說,就是 就近原則,如果 location 中能匹配到,就是用 location 中的 root 配置,忽略 server 中的 root,當(dāng) location 中匹配不到的時(shí)候,則使用 server 中的 root 配置。

總結(jié)

到此這篇關(guān)于Nginx中Location配置的文章就介紹到這了,更多相關(guān)Nginx Location配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx 服務(wù)器重啟關(guān)閉重新加載命令

    Nginx 服務(wù)器重啟關(guān)閉重新加載命令

    這篇文章主要介紹了Nginx 服務(wù)器重啟關(guān)閉重新加載命令,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • nginx部署后css、js、圖片等樣式不加載問題的兩種解決方案

    nginx部署后css、js、圖片等樣式不加載問題的兩種解決方案

    這篇文章主要介紹了nginx部署后css、js、圖片等樣式不加載問題的兩種解決方案,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-12-12
  • nginx請(qǐng)求時(shí)找路徑問題解決

    nginx請(qǐng)求時(shí)找路徑問題解決

    當(dāng)你安裝了nginx的時(shí)候,為nginx配置了如下的location,想要去訪問路徑下面的內(nèi)容,可是總是出現(xiàn)404,找不到文件,這是什么原因呢,今天我們就來解決這個(gè)問題,感興趣的朋友一起看看吧
    2023-10-10
  • Nginx下配置Https證書詳細(xì)過程

    Nginx下配置Https證書詳細(xì)過程

    這篇文章主要介紹了Nginx下配置Https證書詳細(xì)過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Nginx中反向代理+負(fù)載均衡+服務(wù)器宕機(jī)解決辦法詳解

    Nginx中反向代理+負(fù)載均衡+服務(wù)器宕機(jī)解決辦法詳解

    這篇文章主要介紹了Nginx中反向代理+負(fù)載均衡+服務(wù)器宕機(jī)解決辦法詳解,反向代理保證系統(tǒng)安全,不暴露服務(wù)器IP,利用nginx服務(wù)器,利用內(nèi)網(wǎng)ip進(jìn)行訪問,避免出現(xiàn)攻擊服務(wù)器的情況,需要的朋友可以參考下
    2024-01-01
  • 手把手教你利用Nginx搭建屬于自己的服務(wù)器

    手把手教你利用Nginx搭建屬于自己的服務(wù)器

    最近總是想搭建自己的網(wǎng)站,奈何皮夾里空空如也,服務(wù)器也租不起,更別說域名了,于是我就尋思能否自己搭建個(gè)服務(wù)器,還不要錢呢,本文就來手把手教你如何實(shí)現(xiàn)吧
    2023-08-08
  • nginx?ingress限速那些事淺析

    nginx?ingress限速那些事淺析

    這篇文章主要為大家介紹了nginx?ingress限速的一些知識(shí)的淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Nginx配置虛擬主機(jī)的三種方法

    Nginx配置虛擬主機(jī)的三種方法

    本文主要介紹了Nginx配置虛擬主機(jī)的三種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • nginx 解決首頁(yè)跳轉(zhuǎn)問題詳解

    nginx 解決首頁(yè)跳轉(zhuǎn)問題詳解

    這篇文章主要介紹了nginx 解決首頁(yè)跳轉(zhuǎn)問題詳解的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Nginx配置優(yōu)化詳解

    Nginx配置優(yōu)化詳解

    如果你已經(jīng)安裝過Nginx并在生產(chǎn)環(huán)境中使用,那么Nginx配置優(yōu)化你一定也要做,這樣才能看到Nginx性能,本文就從基本配置優(yōu)化開始到高層配置教你如何優(yōu)化Nginx
    2013-11-11

最新評(píng)論