nginx location 匹配規則

語法: location[=|~|~*|^~|@]/uri/{...}正則表達式

配置塊: server架構

location會嘗試根據用戶請求中的URI來匹配上面的/uri表達式,若是能夠匹配,就選擇 location{}塊中的配置來處理用戶請求。code

  • = 表示把uri做爲字符串作徹底匹配 例如:
location =/ {
# 只有當用戶的請求是 / 時,纔會匹配
}
  • ~ 表示匹配uri是大小寫敏感
  • ~* 表示匹配uri時忽略大小寫
  • ^~ 表示匹配uri時只須要其前半部分匹配便可 例如:
location ^~ images {
# 以 images 開始的請求都會匹配
}
  • @ 表示僅用於Nginx服務內部請求之間的重定向,帶有@的location不直接處理用戶請求
  • 正則表達式 例如:
location ~* \.(gif|jpg|jpeg)$ {
# 匹配以 .gif .jpg .jpeg 結尾的請求
}
  • / 匹配全部請求 (通常放在最後) 例如:
location / {
# 匹配全部請求
}

注意,location是有順序的,當一個請求有可能匹配多個location時,實際上這個請求會被第一個location處理。server

在以上各類匹配方式中,都只能表達爲「若是匹配...則...」。若是須要表達「若是不匹配... 則...」,就很難直接作到。有一種解決方法是在最後一個location中使用/做爲參數,它會匹配全部的HTTP請求,這樣就能夠表示若是不能匹配前面的全部location,則由「/」這個location處理。開發

參考資料

《深刻理解Nginx模塊開發與架構解析第2版》字符串

相關文章
相關標籤/搜索