nginx.conf----location匹配規則


指令作用:

    匹配指定的請求URI

語法:

  location [=|~|~*|^~|@] /uri/ {configuration}

匹配命令:

  ~  表示執行一個正則匹配,區分大小寫

  ~*  表示執行一個正則匹配,不區分大小寫

  ^~     表示普通字符匹配,如果該選項匹配,只匹配該選項,不匹配其他。一般用來匹配目錄

  =      進行普通字符精確匹配

      無前綴   用於普通字符串

   @     定義一個命名的location,使用在內部定向時,例如error_page,try_files

    
# 匹配字符串分為兩種:普通字符串、正則表達式。
# ~和~* 用於正則表達式,其他前綴和無任何前綴都用於普通字符串。
# 正則表達式會根據匹配順序,匹配到第一個正則表達式后停止搜索。
# 普通字符串匹配則無視順序,只會選擇最精確的匹配。

優先級:
  1、先匹配精確普通字符串,將最精確的匹配暫時存儲;如果沒有匹配上,進行普通字符串匹配,若匹配多個,按最長匹配,之后是^~匹配;
  2、然后按照配置文件中的聲明順序進行正則表達式匹配,只要匹配到一個正則表達式,則停止匹配,取正則表達式為匹配結果;
  3、如果所有正則表達式都匹配不上,則取1中的結果;
  4、最后匹配“/”,如果普通字符串和正則表達式都匹配不上,則報404 NOT FOUND。

  "="  > "完整路徑" > "^~" > "~/~*" > "/"

 

示例:
location = /{        #只匹配“/”
}

location / {        #匹配任何請求,所有URI都是以“/”開始;更長字符匹配或正則表達式匹配會優先
}

location ^~ /Directory/ {     #匹配任何以/Directory/ 開始的請求,並停止匹配其他location
}

location ~* .(gif|jpg|jpeg)$ {    #匹配以gif、jpg、jpeg結尾的請求;但是遇到^~由它處理
}

location /index/ {            #以/index/開頭的請求,如果鏈接的狀態為404。則會匹配到@index_error
    error_page 404 @index_error;
}
location @index_error {
    ...
}

常用配置指令:alias、root、proxy_pass

1、alias
    別名配置,用於訪問文件系統,在匹配到URI后,指向alias配置的路徑,如:
        location /test/ {
            alias /usr/local/;
        }
    #請求/test/file,返回文件/usr/local/file
        
    正則表達式的location中的alias,會使用正則表達式的值
        location ~* /test/(.+\.(gif|png|jpeg){
            alias /usr/local/test1/$1;
        }
    eg:/test/love.gif轉化為/usr/local/test1/love.gif
   

2、root
    根路徑配置,用於訪問文件系統,在匹配到URI后,指向root配置的路徑,並把請求路徑附加到其后,如:
        location /test/ {
            root /usr/local/;
        }
    #請求/test/file,將會返回文件/usr/local/test/file。
   

3、proxy_pass
    代理配置,用於代理請求,匹配到URI后,轉發請求到proxy_pass配置的URL。
        location /test/ {
            proxy_pass http://192.168.1.111:8089/;
        }

    eg:/test/hello轉化到http://192.168.1.111:8089/hello
    #如果proxy_pass配置了“/”則不附加location的URI,
     沒有配置“/”,則會附加。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM