nginx前綴匹配

nginx

location ^~ /task/ {  # 這樣,當您訪問 http://hostname:port/task/test 時,# 請求會被轉發到 proxy_pass /test,注意 /task/ 前綴在轉發時被去掉了。proxy_pass http://192.168.86.199:8805/;  proxy_set_header Host $host;  proxy_set_header X-Real-IP $remote_addr;  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
}

當您希望保留原始請求的 URI 時,您應該在 proxy_pass 指令中使用 ; 來結束地址部分,然后在后面添加 proxy_set_header Host $host; 來確保請求頭的 Host 字段被正確設置。

請注意,我在 proxy_pass 指令的末尾添加了一個斜杠 /。這是非常重要的,因為它告訴 Nginx 在轉發請求時去掉匹配的前綴(在這個例子中是 /task/)。如果省略了這個斜杠,Nginx 會將完整的原始 URI(包括 /task/ 前綴)轉發到后端服務器

補充

Nginx 的匹配順序是基于配置文件中的 location 塊和它們的指令前綴。下面是 Nginx 匹配順序的詳細說明:

  1. 精確匹配
    如果請求的 URI 與 location 塊中的路徑完全匹配(以 = 開頭),則 Nginx 會選擇該 location 塊進行處理。

  2. 最長前綴匹配
    如果沒有精確匹配,Nginx 會進行最長前綴匹配。它會選擇路徑最長的 location 塊,其中路徑可以是普通字符串(不帶 ^~ 或正則表達式)或帶有 ^~ 前綴的路徑。如果找到以 ^~ 開頭的 location 塊,Nginx 會立即停止搜索并使用該塊,即使存在其他更長的普通字符串路徑。

  3. 正則表達式匹配
    如果最長前綴匹配未找到匹配的 location 塊,Nginx 會檢查以 ~~* 開頭的 location 塊,這些塊使用正則表達式來匹配請求的 URI。~ 表示區分大小寫的正則表達式匹配,而 ~* 表示不區分大小寫的匹配。Nginx 會按照配置文件中的順序逐個檢查這些正則表達式,直到找到第一個匹配的 location 塊。

  4. 默認處理
    如果以上三個步驟都沒有找到匹配的 location 塊,Nginx 會使用默認的 location 塊。默認的 location 塊通常是一個以 / 開頭的普通字符串路徑,它會匹配所有未被其他 location 塊捕獲的請求。

以下是一個簡單的示例配置,展示了 Nginx 的匹配順序:

server {listen 80;server_name example.com;location = /exact-match {# 處理精確匹配的請求}location ^~ /prefix-match {# 處理以 "prefix-match" 開頭的最長前綴請求}location / {# 處理所有其他請求}location ~* \.php$ {# 處理所有以 ".php" 結尾的請求,不區分大小寫}location ~ \.jpg$ {# 處理所有以 ".jpg" 結尾的請求,區分大小寫}
}

在這個示例中,如果請求是 /exact-match,Nginx 會選擇第一個 location 塊。如果請求是 /prefix-match/something,Nginx 會選擇第二個 location 塊,因為 ^~ 前綴指定了最長前綴匹配。對于所有其他請求,Nginx 會按照配置文件中的順序繼續檢查正則表達式匹配,或者最終使用默認的第三個 location 塊。

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

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

相關文章

SQL注入漏洞解析

什么是SQL注入 原理: SQL注入即是指web應用程序對用戶輸入數據的合法性沒有判斷或過濾不嚴,攻擊者可以在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句,在管理員不知情的情況下實現非法操作,以此來實現欺騙數據庫服…

Ps下載安裝(專業圖像處理軟件Ps安裝包下載2024【Windows版】)

Adobe全家桶下載方式 將持續更新~ 文章目錄 Adobe全家桶下載方式Ps下載方式【點我獲取下載鏈接】我們的網站一、Ps簡介聲明 Ps下載方式【點我獲取下載鏈接】 迅雷網盤下載:迅雷網盤下載方式百度網盤下載:百度網盤下載方式夸克網盤下載:夸克…

【Vuforia+Unity】AR01實現單張多張圖片識別產生對應數字內容

1.官網注冊 Home | Engine Developer Portal 2.下載插件SDK,導入Unity 3.官網創建數據庫上傳圖片,官網處理成數據 下載好導入Unity! 下載好導入Unity! 下載好導入Unity! 下載好導入Unity! 4.在Unity設…

圖——最小生成樹實現(Kruskal算法,prime算法)

目錄 預備知識: 最小生成樹概念: Kruskal算法: 代碼實現如下: 測試: Prime算法 : 代碼實現如下: 測試: 結語: 預備知識: 連通圖:在無向圖…

Sora的第一波受害者出現了。

不知道大家最近除了被Sora刷屏之外,有沒有被這張圖刷屏 我只能說網友太強大了 說實話,我進入舟老師的直播間,每次都是還有3分鐘下播,還有6單就拍完 但是10分鐘后還在激情逼單,6單之后還有6單 也許在營銷學上&#x…

深入理解nginx的動態變量機制【上】

目錄 1. 概述2. 動態變量的分類2.1 按照變量名的確定性來分類2.2 按照變量聲明的來源分類2.3 按照是否可以變更分類2.4 按照是否可以緩存分類2.5 按照變量的索引方式分類 3. 變量的使用3.1 聲明一個變量3.1.1 支撐變量聲明的nginx關鍵結構體3.1.2 在配置文件中聲明3.1.3 在http…

C++筆記:OOP三大特性之多態

前言 本博客中的代碼和解釋都是在VS2019下的x86程序中進行的,涉及的指針都是 4 字節,如果要其他平臺下測試,部分代碼需要改動。比如:如果是x64程序,則需要考慮指針是8bytes問題等等。 文章目錄 前言一、多態的概念二、…

【C++初階】系統實現日期類

目錄 一.運算符重載實現各個接口 1.小于 (d1)<> 2.等于 (d1d2) 3.小于等于&#xff08;d1<d2&#xff09; 4.大于&#xff08;d1>d2&#xff09; 5.大于等于&#xff08;d1>d2&#xff09; 6.不等于&#xff08;d1!d2&#xff09; 7.日期天數 (1) 算…

mac圖片怎么轉換格式jpg?四種高效方法助你輕松搞定JPG格式

mac圖片怎么轉換格式jpg&#xff1f;在數字時代&#xff0c;圖片格式的轉換成為了我們日常操作中的一項基本技能。特別是在使用Mac操作系統的用戶中&#xff0c;如何將圖片轉換為JPG格式成為了一個熱門話題。本文將為你詳細介紹四種簡單實用的方法&#xff0c;幫助你在Mac上輕松…

測試基礎1:偉大航路喲呼(Linux基礎、mysql基礎)

1 測試流程和方法 軟件測試定義&#xff1a; 從方式上看&#xff1a;包含人工測試、自動化測試 從方法上看&#xff1a;運行程序或系統和測定程序或系統的過程 從目的上看&#xff1a;包括找bug和找bug出現的原因 軟件測試的原則&#xff1a;功能性、可靠性、易用性、效率性…

一、網絡基礎知識

1、IP地址和端口號 1.1、IP地址 定義&#xff1a;用于在網絡中唯一標識設備的地址。格式&#xff1a;通常由四個數字組成&#xff0c;以點分十進制表示&#xff0c;例如&#xff1a;192.168.0.1。(IPv4)作用&#xff1a;允許網絡中的設備相互通信&#xff0c;通過IP地址可以定…

Python 數據可視化之密度散點圖 Density Scatter Plot

&#x1f349; CSDN 葉庭云&#xff1a;https://yetingyun.blog.csdn.net/ 密度散點圖&#xff08;Density Scatter Plot&#xff09;&#xff0c;也稱為密度點圖或核密度估計散點圖&#xff0c;是一種數據可視化技術&#xff0c;主要用于展示大量數據點在二維平面上的分布情況…

Swift基礎知識:24.Swift可選鏈

在 Swift 中&#xff0c;可選鏈&#xff08;Optional Chaining&#xff09;是一種用于調用可選類型屬性、方法或下標的安全方式。可選鏈允許我們在調用鏈中的任何一個屬性、方法或下標返回 nil 時&#xff0c;整個調用鏈仍然可以繼續執行&#xff0c;而不會因為其中的任何一個可…

一樣的代碼不同項目跳轉頁面報404的解決辦法

今天收到實施反饋的一個問題&#xff0c;點項目名稱跳轉項目詳情頁面時&#xff0c;有的頁面跳轉顯示正常&#xff0c;有的頁面跳轉報404錯誤。錯誤如下&#xff1a; 發現報錯的項目都有一個共性就是有特殊字符“[ ]” , 解決的辦法就是把帶有特殊字符的字段 用 encodeURI()…

Java SE 入門到精通—4.抽象類與接口【Java】

抽象類 同接口一樣&#xff0c;用來約束子類&#xff0c;限制子類必須擁有某些方法&#xff0c;比普通類多了個抽象方法&#xff0c;用抽象方法該類必為抽象類 概念 沒有具體的對象&#xff0c;具體的方法的一個類 abstract關鍵字聲明為抽象類/方法 一個類中有抽象方法則該…

統計前端傳過來的Req的非空屬性個數的工具類

背景 日常開發中&#xff0c;我們通常會根據前端傳過來的實體類的屬性個數去做邏輯判斷&#xff0c;下面的是判斷屬性個數的工具類。 工具類 public static Integer nonNullFieldCount(Req req) {if (req null) {return 0;}int nonNullFieldCount 0;Field[] fields req.ge…

【Django】Django自定義后臺表單——對一個關聯外鍵對象同時添加多個內容

以官方文檔為例&#xff1a; 一個投票問題包含多個選項&#xff0c;基本的表單設計只能一個選項一個選項添加&#xff0c;效率較低&#xff0c;如何在表單設計中一次性添加多個關聯選項&#xff1f; 示例代碼&#xff1a; from django.contrib import adminfrom .models impo…

Java中的關鍵字有哪些?它們各自的作用是什么?請詳細說明?Java中的訪問修飾符有哪些?它們的訪問權限是怎樣的?

1、Java中的關鍵字有哪些&#xff1f;它們各自的作用是什么&#xff1f;請詳細說明&#xff1f; Java中的關鍵字是預先定義好的&#xff0c;具有特殊含義的標識符&#xff0c;用于表示數據類型、程序結構或控制流程等。以下是Java中的一些常用關鍵字及其作用&#xff1a; abs…

【軟件架構】02-復雜度來源

1、性能 1&#xff09;單機 受限于主機的CPU、網絡、磁盤讀寫速度等影響 在多線程的互斥性、并發中的同步數據狀態等&#xff1b; 擴展&#xff1a;硬件資源、增大線程池 2&#xff09;集群 微服務化拆分&#xff0c;導致調用鏈過長&#xff0c;網絡傳輸的消耗過多。 集…

嵌入式Qt 計算器核心算法_3

一.后綴表達式實現算數運算思路 二.算法實現 #include "QCalculatorDec.h"QCalculatorDec::QCalculatorDec() {m_exp "";m_result ""; }QCalculatorDec::~QCalculatorDec() {}bool QCalculatorDec::isDigitOrDot(QChar c) {return ((0 < c)…