nginx配置-location


  • 以 =開頭表示精確匹配
    如 A 中只匹配根目錄結尾的請求,后面不能帶任何字符串。
  • ^~ 開頭表示uri以某個常規字符串開頭,不是正則匹配
  • ~ 開頭表示區分大小寫的正則匹配;
  • ~* 開頭表示不區分大小寫的正則匹配
  • / 通用匹配, 如果沒有其它匹配,任何請求都會匹配到

順序優先級:

(location =) > (location 完整路徑) > (location ^~ 路徑) > (location ~,~* 正則順序) > (location 部分起始路徑) > (/)

 測試:

1.

        location = /api {
          #精確匹配
          return 402;
        }
    
        location /api {
            # 匹配任何以 /api 開頭的地址,匹配符合以后,還要繼續往下搜索
            # 只有后面的正則表達式沒有匹配到時,這一條才會采用這一條
            return 403;
        }

請求http://localhost:8090/api, 返回:402 Payment Required

請求http://localhost:8090/api/a,返回:403 Forbidden

(location =) > (location 完整路徑)

2.

        location ^~ /api/ {
            # 匹配任何以 /api/ 開頭的地址,匹配符合以后,停止往下搜索正則,采用這一條。
            return 401;
        }
        
        location /api {
            return 403;
        }

注意這里 location ^~ /api/ 和 location /api  不能相同,若 location /api 改成 location /api/,啟動會報錯,nginx: [emerg] duplicate location "/api/"

請求http://localhost:8090/api, 返回:403 Forbidden

請求http://localhost:8090/api/a,返回:401 Authorization Required

 (location 完整路徑) > (location ^~ 路徑)

3.

 

        location ^~ /api/ {
            # 匹配任何以 /api/ 開頭的地址,匹配符合以后,停止往下搜索正則,采用這一條。
            return 401;
        }
        
        location ~ \.(gif|jpg|jpeg)$ {

            return 405 ;
        }

請求http://localhost:8090/api/a.jpg, 返回:401 Authorization Required

請求http://localhost:8090/aa/a.jpg,返回:405 Not Allowed

 (location ^~ 路徑) > (location ~,~* 正則順序) 

 

歡迎掃碼交流:

 

 

 

 


免責聲明!

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



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