[轉帖]nginx(九)location指令

一   location

location最佳實踐參考

深入理解location匹配規則

一文理清nginx中的location配置

location講解最好的博客

URL是如何關聯location配置塊的

①  第一部分

  1. location指令的作用: 是根據'用戶請求的URI'來匹配'location',匹配'success'則執行對應的'configure'配置塊
  2. 實質: '$uri[不攜帶查詢參數]''location path'進行匹配

  1. ++++++++++++ '幾種符號的理解' ++++++++++++
  2. (1) '前綴'匹配
  3. '空':表示'前綴'匹配
  4. '=': 表示'精準'匹配,必須'完全一致纔會停止'匹配其它的location
  5. '^~':也是'前綴'匹配,但是如果請求一旦'匹配'後會立即處理,'停止匹配'其它的location
  6. (2) '正則'匹配
  7. '~':區分'大小寫'
  8. '~*':不區分大小寫
  9. (3) '命名'匹配
  10. 應用場景:'error_page''try_files'指令可以使用
  11. 關注點:什麼是'prefix string'?、什麼是'regular expression'? --> "對應哪些修飾符"?
  12. ++++++++++++ '優先級問題' ++++++++++++
  13. 注意:不是按照'nginx.conf'配置文件的'location'先後順序匹配的
  14. (1) 首先'='精準匹配,匹配成功立即'處理並且停止'location繼續匹配
  15. (2) 如果沒有精準匹配,會進行'前綴匹配'(空和^~),^~匹配上也會立即'處理並且停止'location繼續匹配,但是空會'先暫存'結果去匹配
  16. (3) 如果'=''^~'都沒有匹配上,暫時'不管空',如果'有正則'匹配
  17. -- 則先看'~*'匹配即停止、沒有匹配上則看'~'匹配即停止
  18. (4) 如果沒有正則匹配,則就'匹配'之前的'空暫存'結果["最長前綴字符的location"];如果之前的'空'也沒有匹配,則返回'404'
  19. 遺留: 什麼叫作'最長prefix匹配'? -->多個'空暫存''最長'匹配
  20. 疑惑: 對於'regular expression'是採用'優先'匹配,也就是'第一個匹配到'的就是匹配結果,不考慮'~''~*'優先級嗎?

②  第二部分

③  第三部分

最佳案例講解

++++++++++++++++"解讀如下"++++++++++++++++

 

④  第四部分  location @

  1. 1: '修飾符@'用於定義一個'內部' location 塊,該塊'不能'被外部 client '直接'訪問
  2. 2: 只能被 nginx '內部配置指令'所訪問:比如 'try_files' 或者'error_page'
  3. 備註:'internal'也是'同樣'的效果
  4. ​重定向和請求轉發的區別 ​--> "地址欄是否發生變化"

重定向和請求轉發的區別 

  1. +++++++++++ @分割線 +++++++++++
  2. location 的'內部跳轉'匹配符號'@'
  3. location /index/ {
  4. error_page 404 @index_error;
  5. }
  6. location @index_error {
  7. .....
  8. }
  9. 解讀:以 /index/ 開頭的請求,如果'現狀態碼是 404',則會匹配到 @index_error 這條'規則'

 ⑥  location匹配小結 

1)匹配順序

2)注意事項 

3)建議

⑦  加不加/問題

糾正: '/user''/user/'有區別的 --> /user會'返回301''user/ 重定向'

 

⑧  參考

更詳細的正則匹配

nginx 的location詳細理解

nginx的正則表達

nginx 下 location 某個文件夾下某類文件

Nginx location 匹配規則

sub_filter

</article>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章