nginx的location規則(一)

2022-01-26 03:43:44 字數 3658 閱讀 3465

nginx的url配置是使用nginx最基本功能。nginx作為伺服器,它可以接收請求, 處理請求,都是基於客戶端url訪問。掌握url的配置要了解配置的幾個指令。熟悉每個匹配模式的特點。

之前對於nginx的location匹配規則,我是一塌糊塗,最近認真學了一下,稍微清晰一點了,先記錄下來,方便以後再來檢視。

1、location的介紹

location用來根據uri來進行不同的定位。通過它可以把**的不同部分,定位到不同的處理方式上,比如碰到.php,呼叫php直譯器。

2、location的語法

location [=|~|~*|^~] patt     

中括號可以不寫任何引數,此時稱為一般匹配。

符號說明:

1) =         表示精確匹配

2) ^~      表示uri以指定字元或字串開頭的字首匹配,不是正則匹配。一旦匹配成功,則不再查詢其他匹配項

3) ~         表示區分大小寫的正則匹配

4) ~*       表示不區分大小寫的正則匹配

5) /         表示通用匹配, 如果沒有其它匹配,任何請求都會匹配到

規則優先順序:

= 高於 ^~ 高於 ~* 等於 ~ 高於 /

因此,大型別可以分為3種

1)location = patt{}  [精準匹配]

2)location   patt{}   [一般匹配]

3)location ~ patt{}  [正則匹配]

3、匹配規則

首先看有沒有精準匹配,如果有,則停止匹配過程。

location = patt

如果 $uri == patt,匹配成功,使用config a

4、舉例

在下面舉例開始之前,先說明乙個事實:訪問網域名稱test.php7.isee.wang和test.php7.isee.wang/效果是一樣。

原因:1)訪問網域名稱,其實是會由dns解析服務,解析成對應伺服器的ip位址。在這個ip位址,我們所要訪問的是伺服器目錄下的檔案。

2)因此,直接訪問網域名稱或者網域名稱後面跟」/「,都是在根目錄/處進行訪問,所以效果是一樣的。

4.1  配置舉例1

1       location = /

訪問網域名稱test.php7.isee.wang

報404,那麼我們就來檢視下錯誤日誌

執行命令:tail -f /www/wwwlogs/test.php7.isee.wang.error.log

分析:location 後面的 」= /「 表示精確匹配/,但是斜線只是根目錄,後面沒有緊跟要訪問的實際目錄或者檔案,所以這裡的root沒發揮作用,最終引導到索引頁index.htm=>test.php7.isee.wang/index.htm

最終結果,訪問了/www/server/nginx/html/index.htm(nginx全域性伺服器預設目錄) 

定位流程:

1、精準匹配中 「/」,定位到引導頁index.htm

2、再次訪問/index.htm,此次內部跳轉已經是「/index.htm」,根目錄為/www/server/nginx/html,但是我這裡該目錄下沒有index.htm,所以報404

4.2 配置舉例2

1       location = /index.

htm

訪問test.php7.isee.wang/index.htm

分析:1)這裡精確匹配index.htm,這個時候root就發揮作用了,此時會定位到/www/wwwroot/test.php7.isee.wang/html/index.htm

2)為了方便直觀檢視,我在做此配置之前就現在對應的index.htm中的內容就是寫的所在目錄。

3)如果匹配不到相應的location,則會繼承整體nginx伺服器的配置,

即定位到/www/server/nginx/html/index.html

4.3 配置舉例3

location中如果不配置root,就會繼承nginx全域性伺服器的配置/www/server/nginx/html/index.html

1

#定位1

2 location = /index.htm 67

#定位2

8 location = /12#

定位313 location /index.htm

訪問**:

定位流程見下圖:首先是精確匹配到規則2,然後訪問索引引導頁index.htm,然後精確匹配到規則1

4.4配置舉例4

1

#定位1

2 location = /index.

htm 6#

定位27 location = /11#

定位312 location /index.htm

訪問test.php7.isee.wang

匹配規則:

定位流程:訪問網域名稱->匹配規則2->索引引導頁index.html->匹配規則3

注意:1、規則3是普通匹配,index.html包含了index.htm這9個字母,所以能匹配上

2、規則3的root對應的html目錄,其全名應該是nginx全域性預設目錄:/www/server/nginx/html/

4.5 配置舉例5

1  location = /index.

html

56 location = /

1011 location /index.htm

訪問 test.php7.isee.wang

匹配規則:

定位流程:訪問網域名稱->匹配規則2->索引引導頁index.html->匹配規則1(因為精確匹配的優先順序是最高,因此這裡優先匹配規則1,所以訪問的是規則1中root目錄下的index.html)

Nginx 核心配置location匹配規則說明

location介紹 location指令是nginx中最核心的一項配置,根據預先定義的url匹配規則來接收使用者傳送的請求,根據匹配結果,將請求 到後台伺服器 非法的請求直接拒絕並返回403,404,500錯誤處理等。location指令語法 location uri 或 location nam...

nginx的location配置詳解

語法規則 location uri 開頭表示精確匹配 開頭表示uri以某個常規字串開頭,理解為匹配 url路徑即可。nginx不對url做編碼,因此請求為 static 20 aa,可以被規則 static aa匹配到 注意是空格 開頭表示區分大小寫的正則匹配 開頭表示不區分大小寫的正則匹配 和 分...

nginx的location配置詳解

語法規則 location uri 開頭表示精確匹配 開頭表示uri以某個常規字串開頭,理解為匹配 url路徑即可。nginx不對url做編碼,因此請求為 static 20 aa,可以被規則 static aa匹配到 注意是空格 開頭表示區分大小寫的正則匹配 開頭表示不區分大小寫的正則匹配 和 分...