Nginx-基礎-基礎配置-Location

Location

參數匹配模式
參數匹配方式匹配模式說明注意事項
=精準匹配普通字符串匹配用于標準uri前,要求請求字符串與uri精準匹配,成功則立即處理,nginx停止搜索其他匹配。
~正則匹配正則表達式匹配用于正則uri,表示uri包含正則表達式,并且區分大小寫。如果uri包含正則表達式,就必須要使用“~”或者“~*”標識。
~*正則表達式匹配用于正則uri,表示uri包含正則表達式,并且不區分大小寫。
^~帶參前綴匹配 (短路匹配)普通字符串匹配用于標準uri前,并要求一旦匹配到就會立即處理,不再去匹配其他的正則URI,一般用來匹配目錄。
普通前綴匹配普通字符串匹配location后沒有參數直接跟著標準uri,表示前綴匹配,代表跟請求中的uri從頭開始匹配。
參數匹配模式優先級

location 的匹配并不完全按照其在配置文件中出現的順序來匹配,請求URI 會按如下規則進行匹配,優先級從高到低依次為(序號越小優先級越高):

1. location =    # 精準匹配,精準匹配成功則會立即停止其他類型匹配;
2. location ^~   # 帶參前綴匹配。如果是帶有 ^~ 的前綴匹配,匹配成功則立即停止其他類型匹配;如果是普通前綴匹配(不帶參數 ^~ )成功則會暫存,繼續查找正則匹配;
3. location ~    # 正則匹配(區分大小寫)。當同時有多個正則匹配時,按其在配置文件中出現的先后順序優先匹配,命中則立即停止其他類型匹配;
4. location ~*   # 正則匹配(不區分大小寫)
5. location /a   # 普通前綴匹配,優先級低于帶參數前綴匹配。所有正則匹配均未成功時,返回步驟 2 中暫存的普通前綴匹配(不帶參數 ^~ )結果。普通字符串匹配則無視順序,只會選擇最精確的匹配。
6. location /    # 任何沒有匹配成功的,都會匹配這里處理
表達式說明
^匹配輸入字符串的起始位置(以什么開頭)。
$匹配輸入字符串的結束位置(以什么結尾)。
*匹配前面的字符零次或多次。 如"01*“能夠匹配到"0”、“01”、“011”、“0111…”。
+匹配前面的字符一次或多次。 如"01*“能夠匹配到"01”、“011”、“0111…”。
?匹配前面字符零次或一次。 如01?只能能夠匹配到"0"、“01”。
.匹配除”\n“之外的任意一個字符,若要匹配包括”\n“在內的任意字符則使用”[.\n]“之類的表達式.*
|轉義符
\d匹配出數字效果于[0-9]一致
\s空白符
\w任意單詞字符包括下劃線
{n}匹配前面表字符n次
{n,}匹配前面字符不少于n次
{n,m}匹配前面字符n到m次
[]定義匹配的字符范圍
[c]匹配單個字符c
[a-z]匹配a-z小寫字母任意一個
[a-zA-Z0-9]匹配范圍大小寫字母及數字
()看成整體匹配
或運算符

直接上案例

開始之前先介紹一個配置:
merge_slashes on | off; 默認是開啟的也就是會合并// 為/ 提高匹配成功的概率,也就是容錯

通用匹配

一般是兜底策略(待完善)

#如果兜底策略是 靜態文件 這樣是不行了 比如請求一個路徑 /jj 會404 (why?)
location / {root   html;index  index.html index.htm;
}
# 如果是這樣配置 則所有沒有匹配上的路徑最終都會返回402
location / {return 402;
}

普通前綴匹配和通用匹配

1 在普通匹配里一定要注意這兩個路徑是不同的,如果是下面這樣的配置:
http://127.0.0.1:8887/doc/aaa/ 可以匹配成功
http://127.0.0.1:8887/doc/aaa 會404
http://127.0.0.1:8887/Doc/aaa 也會匹配成功

location /doc/aaa/ {return 401;
}

2 普通匹配遵循最長策略

location /document {return 401;}location /doc {return 402;}

訪問document docm docume 都會返回401

帶參匹配
server {listen 80;server_name localhost;location ^~ /doc {return 401;}location ~* ^/document$ {return 402;}
}

如果沒有其它的帶參匹配,則帶參匹配匹配成功后立即返回。如果還有其他帶參匹配,則也是遵循最長匹配原則。

精準匹配
 server {listen       80;server_name  localhost;location = / {return 400;}location = /document {return 401;}}

同理也是如果只有一個精準匹配則會立即返回,否則也是遵循最長原則。

優先級
location ~ /Test1/$ {add_header Content-Type "text/plain";return 200 'first regular expressions match!';
}
location ~* /Test1/(\w+)$ {add_header Content-Type "text/plain";return 200 'longest regular expressions match!';
}
location ^~ /Test1/ {add_header Content-Type "text/plain";return 200 'stop regular expressions match!';
}
location /Test1/Test2 {add_header Content-Type "text/plain";return 200 'longest prefix string match!';
}
location /Test1 {add_header Content-Type "text/plain";return 200 'prefix string match!';
}
location = /Test1 {add_header Content-Type "text/plain";return 200 'exact match!';
}

測試1:
訪問: /Test1 返回值 ‘exact match!’ 因為精確匹配的優先級最高,匹配到了以后不會再向后匹配。
測試2:
訪問: /Test1/ 這個時候精準匹配不上了所以按照優先級應該是去找正則匹配,由于我們配置了帶參匹配^~ 這個匹配成功也會立即返回。結果為:‘stop regular expressions match!’
測試3:
訪問:/Test1/Test2 ~* /Test1/(\w+)$ 由于我們配置正則表達式優先級更高,所以返回結果:‘longest regular expressions match!’
測試4:
訪問:/Test1/Test2/ ~* /Test1/(\w+)$是嚴格以字母或數字結尾 所以正則匹配不上,走最長前綴匹配 ‘longest prefix string match!’ (\w:用于匹配字母,數字或下劃線字符)
測試5:
訪問:/test1/Test2 這個時候不區分大小寫的正則表達式都匹配不上,因為要以字母或數字結尾,所以走普通匹配 返回 ‘longest prefix string match!’

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11590.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11590.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11590.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 Docker 輕松部署 Spring Boot 應用

當今軟件開發領域,Docker 和 Spring Boot 的組合已成為開發和部署應用程序的黃金標準。在這篇博客中,我們將詳細探討如何將 Spring Boot 應用容器化并使用 Docker 進行部署,確保你的部署過程既高效又可靠。 引言 Docker 提供了一個標準化的…

基于SSM的理發店會員管理系統的設計和實現(有報告)。Javaee項目。ssm項目。

演示視頻: 基于SSM的理發店會員管理系統的設計和實現(有報告)。Javaee項目。ssm項目。 項目介紹: 采用M(model)V(view)C(controller)三層體系結構&#xff0…

Docker安裝達夢數據庫

1.確保已安裝Docker 可參考:Linux安裝Docker-CSDN博客 2.上傳dm鏡像并導入安裝包 可以從:產品下載 | 達夢數據庫下載dm鏡像,如下圖: docker load -i dm8_20230808.tar 3.導入后查看鏡像 docker images 4.啟動容器 docker run …

圖的概念、性質和存儲與簡單遍歷

前置知識:樹的基本概念及性質 為了保證學習效果,請保證已經掌握前置知識之后,再來學習本章節!如果在閱讀中遇到困難,也可以回到前面章節查閱。 學習目標 掌握圖的基本概念掌握圖的一些性質 圖的概念 基本概念 圖 (…

Pytorch如何計算網絡參數

方法一. 利用pytorch自身 PyTorch是一個流行的深度學習框架,它允許研究人員和開發者快速構建和訓練神經網絡。計算一個PyTorch網絡的參數量通常涉及兩個步驟:確定網絡中每個層的參數數量,并將它們加起來得到總數。 以下是在PyTorch中計算網…

如何在 CloudFlare 里屏蔽/攔截某個 IP 或者 IP 地址段

最近除了接的 CloudFlare 代配置訂單基本很少折騰自己的 CloudFlare 配置了,今天給大家簡單的講解一下如何在 CloudFlare 里屏蔽/攔截 IP 地址和 IP 地址段,雖然明月一直都很反感針對 IP 的屏蔽攔截,但不得不說有時候還是很有必要的。并且,既然可以攔截屏蔽 IP 自然也可以但…

鴻蒙內核源碼分析(VFS篇) | 文件系統和諧共處的基礎

基本概念 | 官方定義 VFS(Virtual File System)是文件系統的虛擬層,它不是一個實際的文件系統,而是一個異構文件系統之上的軟件粘合層,為用戶提供統一的類Unix文件操作接口。由于不同類型的文件系統接口不統一&#x…

Flink HA模式下JobManager切換時發送告警

資源&版本信息 Flink版本1.14.6 運行平臺:K8s HA使用ZK(使用K8s的ETC應該是一個道理) 詳解Flink HA原理 Flink啟動時會創建HighAvailabilityServices提供HA和相關基礎服務,其中包括leaderRetrievalService和LeaderElecti…

搜索引擎的設計與實現(二)

目錄 3 搜索引擎的基本原理 3.1搜索引擎的基本組成及其功能 l.搜索器 (Crawler) 2.索引器(Indexer) 3.檢索器(Searcher) 4.用戶接口(UserInterface) 3.2搜索引擎的詳細工作流程 4 系統分析與設計 4.1系統分析 4.2系統概要設計 4.2系統實現目標 前面內容請移步 搜索引…

Rust 語言不支持 goto 語句

一、Rust 不提供 goto 語句 Rust 語言并沒有提供 goto 語句。goto 語句在很多現代編程語言中已經不再被推薦使用,因為它可能導致代碼的流程變得難以跟蹤和理解,特別是在復雜的程序中。Rust 語言設計者選擇了更加結構化和可預測的控制流語句,…

關于C++多態的復習總結

多態 簡介: 面向對象的三大特性之一,多態顧名思義即具有多種形態,即去執行某個行為時,當不同的對象去執行時會產生不同的狀態 構成多態的條件 條件一 必須通過基類(父類)的指針或者引用調用虛函數(函數…

寧夏銀川市起名專家的老師顏廷利:死神(死亡)并不可怕,可怕的是...

在中國優秀傳統文化之中,漢語‘巳’字與‘四’同音,在阿拉伯數字里面,通常用‘4’來表示; 湖南長沙、四川成都、重慶、寧夏銀川最靠譜最厲害的起名大師的老師顏廷利教授指出,作為漢語‘九’字,倘若是換一個…

FreeRTOS中斷管理

FreeRTOS中斷管理 基于STM32_stm32 freertos 按鍵中斷-CSDN博客 更加詳情請看以上鏈接↑ 中斷優先級 任何中斷的優先級都大于任務! 在我們的操作系統,中斷同樣是具有優先級的,并且我們也可以設置它的優先級,但是他的優先 級并不是從 0~15 ,默認情況下它是從 5~15 ,…

[ACTF新生賽2020]SoulLike

沒見過的錯誤: ida /ctg目錄下的hexrays.cfg文件中的MAX_FUNCSIZE64 改為 MAX_FUNCSIZE1024 然后就是一堆數據 反正就是12個字符 from pwn import * flag"actf{" k0 for n in range(12):for i in range(33,127):pprocess("./SoulLike")_flag…

94.二叉樹的中序遍歷

刷算法題: 第一遍:1.看5分鐘,沒思路看題解 2.通過題解改進自己的解法,并且要寫每行的注釋以及自己的思路。 3.思考自己做到了題解的哪一步,下次怎么才能做對(總結方法) 4.整理到自己的自媒體平臺。 5.再刷重復的類…

Python爬蟲入門:網絡世界的寶藏獵人

今天阿佑將帶你踏上Python的肩膀,成為一名網絡世界的寶藏獵人! 文章目錄 1. 引言1.1 簡述Python在爬蟲領域的地位1.2 闡明學習網絡基礎對爬蟲的重要性 2. 背景介紹2.1 Python語言的流行與適用場景2.2 網絡通信基礎概念及其在數據抓取中的角色 3. Python基…

今日總結2024/5/13

今日學習了01背包求具體方案的方法 Acwing.12 背包問題求具體方案 由于背包是從小到大枚舉物品,只能從后往前判斷是從哪個狀態遞推過來的,而該題要求按字典序順序輸出字典序最小的最優方案 因此要將物品從大到小枚舉,判斷時從小到大判斷是…

在Windows上有哪些好用的網絡抓包工具?

2024年5月12日,周日上午 在Windows上,有多種好用的網絡抓包工具,以下是一些常見的選項: Wireshark: Wireshark 是一款功能強大的網絡協議分析工具,它可以捕獲并分析計算機網絡上的數據包。它支持廣泛的協議…

ssm+vue的公務用車管理智慧云服務監管平臺查詢統計(有報告)。Javaee項目,ssm vue前后端分離項目

演示視頻: ssmvue的公務用車管理智慧云服務監管平臺查詢統計(有報告)。Javaee項目,ssm vue前后端分離項目 項目介紹: 采用M(model)V(view)C(controller&…

求階乘n!末尾0的個數溢出了怎么辦

小林最近遇到一個問題:“對于任意給定的一個正整數n,統計其階乘n!的末尾中0的個數”,這個問題究竟該如何解決? 先用n5來解決這個問題。n的階乘即n!5!5*4*3*2*1120,顯然應該為2個數相乘等于10才能得到一個結…