Nginx 之 location 指令匹配規則
阿新 • • 發佈:2018-05-01
匹配查找 例如 其他 字符串類型 block 正則匹配 image 使用 files
location 指令的匹配命令如下:
- ~,執行一個區分大小寫的正則匹配。
- ~*,執行一個不區分大小寫的正則匹配。
- ^~,普通字符匹配,通常用於匹配目錄。
- =,普通字符精確匹配。
@,定義一個命名的 location,用在內部定向中。
例如 error_page 或 try_files 中。
location 上下文的優先級與它在 nginx.conf 文件中的位置無關,只與正則表達式的類型有關。對於相同類型的表達式,會優先匹配字符串長的 location。
- 第一優先級,= 類型表達式。一旦匹配成功,不再查找其他匹配項。
- 第二優先級,^~ 類型表達式。一旦匹配成功,不再查找其他匹配項。
- 第三優先級,~/~* 類型表達式。若有多個 location 的正則匹配,使用匹配最長的那個。
- 第四優先級,常規字符串類型,按前綴匹配。
配置示例
location = / {
...
}
僅匹配來自 / 的請求。
location / {
...
}
匹配所有以 / 開頭的請求。
若有更長的同類型表達式,則選擇更長的表達式。
若有正則表達式可以匹配,則優先匹配正則表達式。
location ^~ /images/ {
...
}
匹配所有以 /images/ 開頭的請求,若匹配成功,則停止匹配查找。
location ~* \.(gif|jpg|jpeg)$ { ... }
匹配所有以 gif、jpg 和 jpeg 結尾的請求,若匹配成功,則停止匹配查找。
若有以 /images/ 開頭的請求,則會使用前一個配置。
Nginx 之 location 指令匹配規則