語法規則:
location [=|~|~*|^~] /uri/
首先匹配 =,其次匹配^~,其次是按檔案中順序的正則匹配,最後是交給 /通用匹配。當有匹配成功時候,停止匹配,按當前匹配規則處理請求。
符號含義
== 開頭表示精確匹配
~~ 開頭表示區分大小寫的正則匹配
~*~* 開頭表示不區分大小寫的正則匹配
!~區分大小寫不匹配
!~*不區分大小寫不匹配
^~^~ 開頭表示uri以某個常規字串開頭,理解為匹配 url路徑即可。nginx不對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。
location = /
# 目錄匹配
location ^~ /static/
# 字尾匹配
(1)先判斷精準命中,如果命中,立即返回結果並結束解析過程。
(2)判斷普通命中,如果有多個命中,「記錄」下來「最長」的命中結果(記錄但不結束,最長的為準)。
(3)繼續判斷正規表示式的解析結果,按配置裡的正規表示式順序為準,由上至下開始匹配,一旦匹配成功1個,立即返回結果,並結束解析過程。
(4)普通命中順序無所謂,是因為按命中的長短來確定。正則命中,順序有所謂,因為是從前入往後命中的。
示例如下:
location ^~ /sta/
請求:實際訪問:/usr/local/nginx/html/static/sta1.html 檔案。
location ^~ /tea/
請求:實際訪問:/usr/local/nginx/html/tea/tea1.html 檔案。
還有乙個重要的區別是alias後面必須要用「/」結束,否則會找不到檔案的。。。而root則可有可無~~
另外對於index,含義如下
location /
這樣,當使用者請求 / 位址時,nginx 就會自動在 root 配置指令指定的檔案系統目錄下依次尋找 index.htm 和index.html 這兩個檔案。如果 index.htm 檔案存在,則直接發起「內部跳轉」到 /index.htm 這個新的位址;而如果 index.htm 檔案不存在,則繼續檢查 index.html 是否存在。如果存在,同樣發起「內部跳轉」到/index.html;如果 index.html 檔案仍然不存在,則放棄處理權給 content 階段的下乙個模組 nginx location匹配規則
location匹配命令 波浪線表示執行乙個正則匹配,區分大小寫 表示執行乙個正則匹配,不區分大小寫 表示普通字元匹配,不使用正規表示式,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄 進行普通字元精確匹配 定義乙個命名的 location,使用在內部定向時,例如 error pag...
nginx location匹配規則
location匹配命令 波浪線表示執行乙個正則匹配,區分大小寫 表示執行乙個正則匹配,不區分大小寫 表示普通字元匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄 進行普通字元精確匹配 定義乙個命名的 location,使用在內部定向時,例如 error page,try fil...
nginx location匹配規則
location匹配命令 波浪線表示執行乙個正則匹配,區分大小寫 表示執行乙個正則匹配,不區分大小寫 表示普通字元匹配,如果該選項匹配,只匹配該選項,不匹配別的選項,一般用來匹配目錄 進行普通字元精確匹配 定義乙個命名的 location,使用在內部定向時,例如 error page,try fil...