Nginx伺服器中的location配置詳解

2022-10-03 10:09:11 字數 2554 閱讀 9266

語法

location  [=|~|~*|^~] /uri/ 

規則= : 表示精確的uri匹配(有興趣的同學可以看一下url和uri的區別)

~: 表示區分大小寫的正則匹配

~*:表示不區分大小寫的正則匹配

!~ && !~*:表示區分大小寫不匹配的正則和不區分大小寫的不匹配的正則

/:通用匹配,任何請求都會匹配到

location匹配目標

location匹配測試只使用請求uri的部分,而不使用引數部分。(原因:引數的寫法太多,無法精確匹配)

location匹配順序

多個location配置的前提下,location的匹配順序(未驗證,嘿嘿,google上搜的)

1.首先匹配=

2.其次匹配^~

3.再其次按照配置檔案的順序進行正則匹配、

4.最後是交給/進行通用匹配

注意:當有匹配成功時,立刻停止匹配,按照當前匹配規則處理請求

演示例項

nginx 配置檔案,自下到上分為三種層次分明的結構:

nginx 允許使用者定義 location block ,並指定乙個匹配模式(pattern)匹配特定的 uri。除了簡單的字串(比如檔案系統路徑),還允許使用更為複雜的匹配模式(pattern)。

location block 的基本語法形式是:

location [=|~|~*|^~|@] pattern

[=|~|~*|^~|@] 被稱作 location modifier ,這會定義 nginx 如何去匹配其後的 pattern ,以及該 pattern 的最基本的屬性(簡單字串或正規表示式)。

關於 location modifier

1. =

這會完全匹配指定的 pattern ,且這裡的 pattern 被限制成簡單的字串,也就是說這裡不能使用正規表示式。

example:

server

}匹配情況:

# 正好完全匹配

# 如果執行 nginx server 的系統本身對大小寫不敏感,比如 windows ,那麼也匹配

?param1?m2    # 忽略查詢串引數(query string arguments),這裡就是 /abcd 後面的 ?param1?m2

/&www.cppcns.comnbsp;   # 不匹配,因為末尾存在反斜槓(trailing slash),nginx 不認為這種情況是完全匹配

e    # 不匹配,因為不是完全匹配

2. (nonwww.cppcns.come)

可以不寫 location modifier ,nginx 仍然能去匹配 pattern 。這種情況下,匹配那些以指定的 patern 開頭的 uri,注意這裡的 uri 只能是普通字串,不能使用正規表示式。

example:

server

}匹配情況:

# 正好完程式設計客棧全匹配

# 如果執行 nginx server 的系統本身對大小寫不敏感,比如 windows ,那麼也匹配

?param1?m2    # 忽略查詢串引數(query string arguments),這裡就是 /abcd 後面的 ?param1?m2

/    # 末尾存在反斜槓(trailing slash)也屬於匹配範圍內

e    # 仍然匹配,因為 uri 是以 pattern 開頭的

3. ~

這個 location modifier 對大小寫敏感,且 pattern 須是正規表示式

example:

server

}匹配情況:

# 完全匹配

# 不匹配,~ 對大小寫是敏感的

?param1?m2    # 忽略查詢串引數(query string arguments),這裡就是 /abcd 後面的 ?param1?m2

/    # 不匹配,因為末尾存在反斜槓(trailing slash),並不匹配正規表示式 ^/abcd$

e    # 不匹配正規表示式 ^/abcd$

注意:對於一些對大小寫不敏感的系統,比如 windows ,~ 和 ~* 都是不起作用的,這主要是作業系統的原因。

4. ~*

與 ~ 類似,但這個 location modifier 不區分大小寫,pattern 須是正規表示式

example:

server

}匹配情況:

# 完全匹配

# 匹配,這就是它不區分大小寫的特性

?param1?m2    # 忽略查詢串引數(query string arguments),這裡就是 /abcd 後面的程式設計客棧 ?param1?m2

/    # 不匹配,因為末尾存在反斜槓(trailing slash),並不匹配正規表示式 ^/abcd$

e    # 不匹配正規表示式 ^/abcd$

5. ^~

Nginx 搭建Nginx伺服器

在ip位址為192.168.4.5的主機上安裝部署nginx服務,並可以將nginx伺服器,要求編譯時啟用如下功能 支援ssl加密功能 設定nginx賬戶及組名稱均為nginx nginx伺服器公升級到更高版本。步驟一 構建nginx伺服器 1 使用原始碼包安裝nginx軟體包 root proxy...

Nginx中的伺服器名稱規則

伺服器名稱 server names 伺服器名稱是通過指令server name來指定的。但是在前面講的部分,使用的是確切的伺服器名稱 exact names 當然在實際中還可以使用wildcard names以及正規表示式的伺服器名稱 server server server server 對於乙...

Nginx伺服器的程序

nginx伺服器的三大類程序 一 主程序 nginx伺服器啟動時執行的主要程序。它的主要功能是與外界通訊和對內部其他程序進行管理,具體來說有以下幾點 1。讀取nginx配置檔案並驗證其有效性和正確性。2.建立 繫結和關閉socket 3.按照配置生成 管理和結束工作程序 4.接收外界指令,比如重啟 ...