Nginx Location 指令語法解析

2021-09-24 08:10:48 字數 1729 閱讀 7699

本文翻譯自 www.keycdn.com/support/ngi…

nginx location是使用 nginx 的過程中必須要掌握的技能,無論是在server blocks還是其他location blocks中都會用到,這篇文章簡單介紹了當請求來臨時location指令是如何處理客戶端uri請求的.

nginx 將配置按照層級關係,用塊狀形式進行配置,每當乙個請求來臨時,nginx 伺服器就會處理這個請求到底會對映到哪個塊配置.在 nginx 的配置檔案中,兩種主要的塊配置是:

如下就是常用的 location 配置的語法格式,其中modifier是可選的,location_match就是制定 uri 應該去往哪個配置的關鍵.

location optional_modifier location_match 

複製**

regular expressions(re)或者字面量都可以用來定義modifier,如果 location 配置中制定了modifier,可能會改變 nginx匹配 location的方式,如下介紹幾種最重要的modifier:

對於每個請求來說,nginx 會選擇最匹配的乙個 location 來處理這個請求,nginx 其實就是通過對比這些 location 規則來選擇乙個 location,對比的順序可以總結為:

首先匹配字首匹配(沒有 re 表示式),針對當前這個請求,每個字首匹配都匹配一遍.

搜尋=匹配,如果當前請求匹配上了,搜尋將會停止,直接使用這個這個 location.

只要最長字首匹配被暫存和選中,nginx 就會看當前的 location 是否有大小寫敏感的 re(~~*),第乙個匹配上這種會被當做有效的 location來處理這個請求.

如果沒有 re 的 location 匹配上,前面暫存的 location 就會被選中來處理這個請求.

注:所以 沒有修飾符的 location 其實是很浪費資源的,可以用 ^~ 來替代.

如下是一些 location 配置的例子,用來詳細描述上面所說的處理順序,你也可以按照具體實際情況來修改這些例子.

location  = / 

複製**

location /data/ 

複製**

location

^~ /img/

複製**

location

複製**

如何防止盜鏈:

location

~ .(png|gif|jpe?g)$

}複製**

在可寫許可權的目錄禁止指令碼:

location

~* /(media|images|cache|tmp|logs)/.*.(php|jsp|pl|py|asp|cgi|sh)$

複製**

更多 nginx location 指令的資訊,可以參見官網:nginx

Nginx Location 指令基礎

nginx 中的 location 指令 是nginxhttpcoremodule中重要指令。location 指令比較簡單,但卻是配置 nginx 過程中不得不去了解的。location 指令,是用來為匹配的 uri 進行配置,uri 即語法中的 uri 可以是字串或正規表示式。但如果要使用正規表...

Nginx Location 指令基礎

nginx 中的 location 指令 是nginxhttpcoremodule中重要指令。location 指令比較簡單,但卻是配置 nginx 過程中不得不去了解的。location 指令,是用來為匹配的 uri 進行配置,uri 即語法中的 uri 可以是字串或正規表示式。但如果要使用正規表...

nginx location指令詳解

nginx的http配置主要包括三個區塊,結構如下 http location區段 通過指定模式來與客戶端請求的uri相匹配,基本語法如下 location pattern 1 沒有修飾符 表示 必須以指定模式開始,如 server 那麼,如下是對的 p1 de 2 表示 必須與指定的模式精確匹配 ...