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.訪問test.php7.isee.wang/index.htmhtm
分析: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訪問test.php7.isee.wang#定位1
2 location = /index.
htm 6#
定位27 location = /11#
定位312 location /index.htm
匹配規則:
定位流程:訪問網域名稱->匹配規則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.訪問 test.php7.isee.wanghtml
56 location = /
1011 location /index.htm
匹配規則:
定位流程:訪問網域名稱->匹配規則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匹配到 注意是空格 開頭表示區分大小寫的正則匹配 開頭表示不區分大小寫的正則匹配 和 分...