nginx配置文件中的location中文详解
location
語法:location [=|~|~*|^~] /uri/ { … }
默認:否
上下文:server
這個指令隨URL不同而接受不同的結構。你可以配置使用常規字符串和正則表達式。如果使用正則表達式,你必須使用 ~* 前綴選擇不區分大小寫的匹配或者 ~ 選擇區分大小寫的匹配。
確定 哪個location 指令匹配一個特定指令,常規字符串第一個測試。常規字符串匹配請求的開始部分并且區分大小寫,最明確的匹配將會被使用(查看下文明白 nginx 怎么確定它)。然后正則表達式按照配置文件里的順序測試。找到第一個比配的正則表達式將停止搜索。如果沒有找到匹配的正則表達式,使用常規字符串的結果。
有兩個方法修改這個行為。第一個方法是使用 “=”前綴,將只執行嚴格匹配。如果這個查詢匹配,那么將停止搜索并立即處理這個請求。例子:如果經常發生”/”請求,那么使用 “location = /” 將加速處理這個請求。
第二個是使用 ^~ 前綴。如果把這個前綴用于一個常規字符串那么告訴nginx 如果路徑匹配那么不測試正則表達式。
而且它重要在于 NGINX 做比較沒有 URL 編碼,所以如果你有一個 URL 鏈接’/images/%20/test’ , 那么使用 “images/ /test” 限定location。
總結,指令按下列順序被接受:
1. = 前綴的指令嚴格匹配這個查詢。如果找到,停止搜索。
2. 剩下的常規字符串,長的在前。如果這個匹配使用 ^~ 前綴,搜索停止。
3. 正則表達式,按配置文件里的順序。
4. 如果第三步產生匹配,則使用這個結果。否則使用第二步的匹配結果。
例子:
location = / { # 只匹配 / 查詢。 [ configuration A ] } location / { # 匹配任何查詢,因為所有請求都已 / 開頭。但是正則表達式規則和長的塊規則將被優先和查詢匹配。 [ configuration B ] } location ^~ /images/ { # 匹配任何已 /images/ 開頭的任何查詢并且停止搜索。任何正則表達式將不會被測試。 [ configuration C ] } location ~* \.(gif|jpg|jpeg)$ { # 匹配任何已 gif、jpg 或 jpeg 結尾的請求。然而所有 /images/ 目錄的請求將使用 Configuration C。 [ configuration D ] }例子請求:
/ -> configuration A
/documents/document.html -> configuration B
/images/1.gif -> configuration C
/documents/1.jpg -> configuration D
注意:按任意順序定義這4個配置結果將仍然一樣。
總結
以上是生活随笔為你收集整理的nginx配置文件中的location中文详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入理解计算机系统读书笔记
- 下一篇: 控制器修理