指令作用
匹配指定的請求uri(請求uri不包含查詢字符串,如http://localhost:8080/test?id=10,請求uri是/test)
語法形式
location [ = | ~ | ~* | ^~ | @] /uri/ { configuration }
匹配模式及順序
匹配字符串分為兩種:普通字符串(literal string)和正則表達式(regular expression),其中 ~ 和 ~* 用於正則表達式, 其他前綴和無任何前綴都用於普通字符串。
1、先匹配普通字符串,將最精確的匹配暫時存儲; 2、然后按照配置文件中的聲明順序進行正則表達式匹配,只要匹配到一條正則表達式,則停止匹配,取正則表達式為匹配結果; 3、如果所有正則表達式都匹配不上,則取1中存儲的結果; 4、如果普通字符串和正則表達式都匹配不上,則報404 NOT FOUND。
location = /uri =開頭表示精確前綴匹配,只有完全匹配才能生效。 location ^~ /uri ^~開頭表示普通字符串匹配上以后不再進行正則匹配。 location ~ pattern ~開頭表示區分大小寫的正則匹配。 location ~* pattern ~*開頭表示不區分大小寫的正則匹配。 location /uri 不帶任何修飾符,表示前綴匹配。 location / 通用匹配,任何未匹配到其他location的請求都會匹配到。 注意:正則匹配會根據匹配順序,找到第一個匹配的正則表達式后將停止搜索。普通字符串匹配則無視順序,只會選擇最精確的匹配。
常用配置
alias——別名配置,用於訪問文件系統,在匹配到location配置的URL路徑后,指向alias配置的路徑: location /test/ { alias /usr/local/; }
proxy_pass——反向代理配置,用於代理請求,適用於前后端負載分離或多台機器、服務器負載分離的場景,在匹配到location配置的URL路徑后,轉發請求到proxy_pass配置額URL,是否會附加location配置路徑與proxy_pass配置的路徑后是否有"/"有關,有"/"則不附加,如: location /test/ { proxy_pass http://127.0.0.1:8080/; }
參考鏈接: