1. 程式人生 > >Nginx 之 location 指令匹配規則

Nginx 之 location 指令匹配規則

匹配查找 例如 其他 字符串類型 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 指令匹配規則