nginx配置中有無‘‘/’’的區別

在Nginx配置中,location指令末尾的斜杠/proxy_pass目標地址末尾的斜杠/組合使用會產生顯著差異。以下是四種組合的區別詳解:


??核心區別對比表??

配置方案匹配規則請求URI傳遞邏輯實際轉發效果示例
location /api/ + proxy_pass ...701/僅匹配/api/開頭的URI??精確替換??:/api/替換為//api/userhttp://10.11.0.21:701/user
location /api + proxy_pass ...701匹配??任何以/api開頭??的URI??全量傳遞??:完整URI原樣轉發/api/userhttp://10.11.0.21:701/api/user
location /api/ + proxy_pass ...701僅匹配/api/開頭的URI??全量傳遞??:完整URI原樣轉發/api/userhttp://10.11.0.21:701/api/user
location /api + proxy_pass ...701/匹配??任何以/api開頭??的URI??前綴截斷??:/api替換為//api/userhttp://10.11.0.21:701//user

??詳細解析??

1. ??location /api/ + proxy_pass ...701/??
  • ??匹配規則??:
    URI必須??嚴格以/api/開頭??(如/api/user匹配,但/apix不匹配)。
  • ??URI處理??:
    /api/被??完全替換??為目標地址的/,后端收到請求路徑去掉/api/前綴。
    # 請求:/api/user/profile
    # 轉發:http://10.11.0.21:701/user/profile
2. ??location /api + proxy_pass ...701??
  • ??匹配規則??:
    匹配??所有以/api開頭的URI??(包括/api/user/apix等)。
  • ??URI處理??:
    整個URI(含/api前綴)??完整傳遞??給后端。
    # 請求:/api/user
    # 轉發:http://10.11.0.21:701/api/user
3. ??location /api/ + proxy_pass ...701??
  • ??匹配規則??:
    同方案1,僅匹配/api/開頭的URI。
  • ??URI處理??:
    ??未移除/api/前綴??,原樣傳遞完整URI。
    # 請求:/api/user
    # 轉發:http://10.11.0.21:701/api/user
4. ??location /api + proxy_pass ...701/??
  • ??匹配規則??:
    同方案2,匹配所有以/api開頭的URI(包括/apix)。
  • ??URI處理??:
    /api被替換為目標地址的/,但會??產生雙斜杠//問題??:
    # 請求:/api/user
    # 轉發:http://10.11.0.21:701//user
    #        ↑ 注意雙斜杠(多數后端框架會自動處理為單斜杠)

??生產環境推薦方案??

? 方案1:location /api/ { proxy_pass .../; }
  • ??最佳實踐??:嚴格路徑匹配 + 精確前綴替換
  • ??應用場景??:前后端分離架構,需剝離API前綴
  • ??優勢??:路徑規則清晰,避免模糊匹配風險
🚫 不推薦方案2和3:
  • ??問題??:會暴露API路徑前綴(如/api/user),降低安全性
  • ??異常案例??:若配置location /api,請求/apixyz將被錯誤路由
?? 避免方案4:
  • ??嚴重缺陷??:
    • 產生非法URI(如//user),部分后端框架可能報錯
    • 寬泛匹配(/apixyz被誤轉成//xyz

??完整對比驗證??

# 測試配置
server {listen 80;# 方案1: 精確替換location /api/ {proxy_pass http://backend/;}# 方案2: 全量傳遞location /api {proxy_pass http://backend;}# 方案3: 全量傳遞 (嚴格路徑)location /api/ {proxy_pass http://backend;}# 方案4: 危險替換location /api {proxy_pass http://backend/;}
}
??請求結果??
請求路徑方案1的轉發路徑方案2的轉發路徑方案3的轉發路徑方案4的轉發路徑
/api/user/user/api/user/api/user//user
/api///api//api///
/apixyz??不匹配??/apixyz??不匹配??//xyz

??關鍵結論??:始終在proxy_pass地址末尾添加/以實現路徑前綴替換,并嚴格用/api/限定匹配范圍。

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

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

相關文章

系統安全之身份認證

本篇我們對常用的身份認證協議做簡要的梳理,包括主流的 HTTP 相關認證協議以及證書密鑰對、新興的 WebAuthn 認證。 HTTP 協議認證 RFC 7235 中定義了 HTTP 協議的認證框架,要求在支持 HTTP 協議的服務器,如果訪問服務的身份驗證失敗&#…

部署http服務

使用flask搭建一個http服務,能夠通過本地的另外一個終端訪問對應接口,拿到服務端的計算結果 服務端: 創建一個test_http_dtw.py并運行 from flask import Flask, request, jsonifyapp Flask(__name__)# 示例分析函數 def analysis(data):…

WLAN 技術指南:從入門到原理

文章目錄 目錄 文章目錄 前言 一.WLAN 基本概念 有線側組網概念 AP-AC 組網方式 AC 連接方式 CAPWAP 協議 無線側組網概念 無線信道 ?編輯 BSS/SSID/BSSID ?編輯 VAP ESS 二.WLAN 組網架構 基本的 WLAN 組網架構 四.WLAN 工作原理 AP 上線 AP 獲取 IP 地址階段 CAP…

語言學習專用AI播放器推薦:LLPlayer

學語言,經常會看大量的比較優秀的視頻材料,那么推薦一款語言學習利器,極大提高生產力。 LLPlayer 是一款專為語言學習者設計的獨特視頻播放器。 它具有許多重要功能,例如可同時顯示文本字幕和位圖字幕、使用 OpenAI Whisper 自動…

mysql 關聯表查詢,索引失效

來源表: ##示例 CREATE TABLE order_wide (order_id varchar(33) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 訂單ID,member_id int(11) DEFAULT NULL COMMENT 用戶ID,content varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 訂單標簽,PRIMARY KEY (order_…

Oracle DG庫手動注冊歸檔日志的兩種方法

Oracle DG庫手動注冊歸檔日志的兩種方法 注冊單個歸檔日志文件注冊多個歸檔日志文件有的時候由于網絡或各種原因,Oracle DG庫服務器上可能缺少部分歸檔日志文件,導致DG庫的MRP進程一直處于WAIT_FOR_GAP狀態。 此時我們可以手動從主庫或其他DG拷貝歸檔日志到當前DG服務器,并…

中小型VUE3項目創建流程相關命令tips

開新項目因為距離上次初始化時間太過久遠,忘記初始化命令的有多少? 不得已簡要記錄一下流程 1. 使用vite構建新項目 1.1 構建 npm create vite@latest my-vue-app --template vue1.2 安裝依賴 npm install1.3 啟動 npm run dev參考文檔 2. 添加需要的插件 2.1 準備工作…

Web后端開發(請求、響應)

目錄 請求: Postman: 簡單參數: 實體參數: 數組集合參數: 日期參數: Json參數: 路徑參數: 響應: 請求響應: 請求:獲取請求數據 響應&a…

Excel大廠自動化報表實戰(互聯網金融-數據分析周報制作上)

這是Excel大廠自動化報表實戰第二期--互聯網金融-數據分析周報制作上 數據資源已經與這篇博客捆綁,有需要者可以下載通過網盤分享的文件:2.4自動化報表-8月成交數據.xlsx,2.4自動化報表-8月獲客數據.csv等2個文件 鏈接: https://pan.baidu.co…

HTTP 網絡協議演進過程

網絡協議演進問題,涉及到HTTP版本之間的連接復用優化和協議升級(特別是從HTTP/2到HTTP/3)的核心變化。我們以 HTTP/1.0 到 HTTP/2.0,再到 HTTP/3.0 的演進順序來詳細解釋它們在通道復用(TCP/QUIC)上的優化和…

Xsens動捕和Manus數據手套在元宇宙數字人制作中提供解決方案

硬件連接與數據傳輸 Xsens與Manus集成:Xsens慣性動作捕捉系統負責捕捉人體的身體動作,Manus數據手套專門精確捕捉手指動作。Xsens動捕套裝上有接口或無線連接模塊,可與Manus手套配對和傳輸數據,將身體與手指跟蹤數據結合。 Face…

【Java開發日記】簡單說一說使用 Netty 進行 Socket 編程

目錄 什么是 Netty 對比Netty和傳統的Socket 傳統Socket編程服務端 傳統Socket編程客戶端 Netty環境搭建 先創建出來一個項目 Netty服務端程序 Netty客戶端程序 Channel Channel分類 為什么選擇Netty 什么是 Netty Netty是由JBOSS提供的一個java開源框架&#xff0c…

目標檢測任務的評估指標mAP50和mAP50-95

mAP50 和 mAP50-95 是目標檢測任務中常用的評估指標,用于衡量模型在不同 交并比(IoU)閾值 下的平均精度(Average Precision, AP)。它們的區別主要體現在 IoU 閾值范圍 上。 ? 1. mAP50(mean Average Prec…

COHERENT XPRV23光電接收器控制軟件

COHERENT XPRV23光電接收器控制軟件

執行應用共享內存空間 同步QT進行快速捕獲數據流

引言:本文章針對驅動的應用app,例如sensor data內容的獲取,顯示到QT的一種辦法,共享內存。舉例子,這是一個常見需求,比如攝像頭采集進程與 GUI 顯示進程分離,通過共享內存傳輸圖像,避…

opencl的簡單介紹以及c++實例

🧩 一、什么是 OpenCL? OpenCL(Open Computing Language) 是一個用于異構計算的開放標準,由 Khronos Group 提出和維護。它允許你在各種計算設備上(如 CPU、GPU、DSP、FPGA)并行運行代碼&#…

ThingsCloud事物云平臺搭建-微信小程序

ThingsCloud云平臺與微信小程序設計 本文主要是介紹ThingsCloud云平臺的搭建及微信小程序與app的使用。 當前文章是作為一個通用案例,介紹如何快速使用 ThingsCloud云平臺 以及 利用 ThingsCloud云平臺平臺的框架快速設計手機APP和微信小程序。 可以快速讓硬件接入,實現硬件…

2024 一帶一路暨金磚國家職業技能大賽(金磚國家未來技能和技術挑戰賽)

2024 一帶一路暨金磚國家職業技能大賽(金磚國家未來技能和技術挑戰賽任務書) 1 參加比賽的形式:2 項目階段簡介:3 項目階段和所需時間:4 第一階段:職業素養與理論技能4.1 項目 1.職業素養4.2 項目 2.法律法…

2025-06-13【api】阿里百煉api調用方法

通過調用各種大模型可以完成對文生文,文生圖,圖片理解,文生視頻,音頻識別,文轉音頻等需求。 #方法一 import os from openai import OpenAI# 初始化客戶端 client OpenAI(api_keyos.getenv("DASHSCOPE_API_KEY&…

軟件工程的軟件生命周期通常分為以下主要階段

軟件工程的軟件生命周期通常分為以下主要階段: 可行性分析 :評估項目的技術、經濟、操作和法律可行性,確定項目是否值得開發。需求分析 :明確用戶需求,定義軟件功能和非功能需求,形成需求規格說明書。系統…