基礎(chǔ)知識(shí)
location的匹配順序是“先匹配正則,在匹配普通”。
location的匹配順序其實(shí)是“先匹配普通,在匹配正則”。造成誤解的原因是:正則匹配會(huì)覆蓋普通匹配
Nginx location 配置語(yǔ)法
1. location [ = | ~ | ~* | ^~ ] uri { ... }
2. location @name { ... }
location 配置可以有兩種配置方法
1.前綴 + uri(字符串/正則表達(dá)式)
2.@ + name
前綴含義
= :精確匹配(必須全部相等)
~ :大小寫敏感
~* :忽略大小寫
^~ :只需匹配uri部分
@ :內(nèi)部服務(wù)跳轉(zhuǎn)
Location 基礎(chǔ)知識(shí)
1.location 是在 server 塊中配置。
2.可以根據(jù)不同的 URI 使用不同的配置(location 中配置),來(lái)處理不同的請(qǐng)求。
3.location 是有順序的,會(huì)被第一個(gè)匹配的location 處理。
Location 配置demo
1.=,精確匹配
location = / {
#規(guī)則
}
# 則匹配到 `http://www.example.com/` 這種請(qǐng)求。
2.~,大小寫敏感
location ~ /Example/ {
#規(guī)則
}
#請(qǐng)求示例
#http://www.example.com/Example/ [成功]
#http://www.example.com/example/ [失敗]
3.~*,大小寫忽略
location ~* /Example/ {
#規(guī)則
}
# 則會(huì)忽略 uri 部分的大小寫
#http://www.example.com/Example/ [成功]
#http://www.example.com/example/ [成功]
4.^~,只匹配以 uri 開(kāi)頭
location ^~ /img/ {
#規(guī)則
}
#以 /img/ 開(kāi)頭的請(qǐng)求,都會(huì)匹配上
#http://www.example.com/img/a.jpg [成功]
#http://www.example.com/img/b.mp4 [成功]
5.@,nginx內(nèi)部跳轉(zhuǎn)
location /img/ {
error_page 404 @img_err;
}
location @img_err {
# 規(guī)則
}
#以 /img/ 開(kāi)頭的請(qǐng)求,如果鏈接的狀態(tài)為 404。則會(huì)匹配到 @img_err 這條規(guī)則上。
總結(jié)
Nginx 中的 location 并沒(méi)有想象中的很難懂,不必害怕。多找資料看看,多嘗試。你就會(huì)有收獲。
參考
- http://nginx.org/en/docs/http/ngx_http_core_module.html#location
- 統(tǒng)一資源標(biāo)志符
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。