nginx中proxy_pass的配置

 Nginx的官網將proxy_pass分為兩種類型:

  • 不帶URI方式:只包含IP和端口號的,不帶uri(單個/也算uri),比如proxy_pass http://localhost:8080
  • 帶URI方式:在端口號之后有其他路徑的,包含了只有單個/的如proxy_pass http://localhost:8080/,以及其他路徑,比如proxy_pass http://localhost:8080/abc

一、URL末尾存在 uri?

處理邏輯:代理請求時,會先將請求的uri中和location匹配的部分替換成?proxy_pass 指定的uri,再將最終的uri拼接到代理地址,才是最終訪問的url,如:

location /proxy {proxy_pass http://127.0.0.1:8099/svr1;  # uri為'/svr1'
}

發送如下請求:http://localhost:8088/proxy/index.html
詳細解析:

  請求的uri:/proxy/index.html
  location匹配的部分:/proxy
  proxy_pass 指定的uri:/svr1
  最終的uri:/svr1/index.html (將請求的uri中和location匹配的部分替換成 proxy_pass 指定的uri)
  代理地址:http://127.0.0.1:8099
  最終訪問的url:http://127.0.0.1:8099/svr1/index.html
  即訪問 http://localhost:8088/proxy/index.html,

?????? 實際請求路徑為 http://127.0.0.1:8099/svr1/index.html 

二、URL末尾不存在 uri

  處理邏輯:代理請求時,直接將請求的uri拼接到代理地址,就是最終訪問的url,如:

location /proxy2 {proxy_pass http://127.0.0.1:8099;  # 無uri
}

發送如下請求:http://localhost:8088/proxy2/index.html  

詳細解析:  

  請求的uri:/proxy2/index.html
  代理地址:http://127.0.0.1:8099
  最終訪問的url:http://127.0.0.1:8099/proxy2/index.html
  即訪問 http://localhost:8088/proxy2/index.html,

??????? 實際請求路徑為 http://127.0.0.1:8099/proxy2/index.html

下面的幾個例子加深理解:

server {listen       80;server_name  localhost;location /api1/ {proxy_pass http://localhost:8080;}# http://localhost/api1/xxx -> http://localhost:8080/api1/xxxlocation /api2/ {proxy_pass http://localhost:8080/;}# http://localhost/api2/xxx -> http://localhost:8080/xxxlocation /api3 {proxy_pass http://localhost:8080;}# http://localhost/api3/xxx -> http://localhost:8080/api3/xxxlocation /api4 {proxy_pass http://localhost:8080/;}# http://localhost/api4/xxx -> http://localhost:8080//xxx,請注意這里的雙斜線,好好分析一下。location /api5/ {proxy_pass http://localhost:8080/haha;}# http://localhost/api5/xxx -> http://localhost:8080/hahaxxx,請注意這里的haha和xxx之間沒有斜杠,分析一下原因。location /api6/ {proxy_pass http://localhost:8080/haha/;}# http://localhost/api6/xxx -> http://localhost:8080/haha/xxxlocation /api7 {proxy_pass http://localhost:8080/haha;}# http://localhost/api7/xxx -> http://localhost:8080/haha/xxxlocation /api8 {proxy_pass http://localhost:8080/haha/;}# http://localhost/api8/xxx -> http://localhost:8080/haha//xxx,請注意這里的雙斜杠。
}

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

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

相關文章

思維模型 潘多拉效應

本系列文章 主要是 分享 思維模型 ,涉及各個領域,重在提升認知。越是禁止,越是好奇。 1 潘多拉效應的應用 1.1 潘多拉效應在管理中的應用 通用電氣公司曾經推出了一項名為“六西格瑪”的管理方法,該方法旨在通過優化業務流程和提…

Linux終端和命令行

文章目錄 學習Linux終端和命令行一、常用Linux命令的基本使用(一)放大/縮小終端窗口的字體顯示(二)自動補全 二、軟件安裝三、文件和目錄常用命令(一)ls:查看目錄內容1.ls命令說明2.Linux下文件…

Peter算法小課堂—前綴和數組的應用

桶 相當于計數排序&#xff0c;看一個視頻 桶排序 太戈編程1620題 算法解析 #include <bits/stdc.h> using namespace std; const int R11; int cnt[R];//cnt[t]代表第t天新增幾人 int s[R];//s[]數組是cnt[]數組的前綴和數組 int n,t; int main(){cin>>n;for(…

flutter 輸入框組件 高度問題

使用的組件名字為 TestField 組件 TestField 配置 占位文字 設置 decoration 屬性 InputDecoration 中hintText去掉輸入到 輸入框的間距 InputDecoration 中contentPadding EdgeInsets.zero去掉邊框中的間距 InputDecoration 中 使用 isDense:true設置輸入框內文字的顏色 …

Android 11.0 SystemUI 去掉狀態欄wifi流量上下行圖標功能實現

1.概述 在11.0系統定制rom開發中,在關于systemui的定制功能總,在SystemUI 狀態欄上顯示時鐘,電池電量 wifi圖標,在顯示wifi圖標時,網絡實時更新時,但是會時不時顯示上下行圖標 顯得很不美觀,客戶需求要求不顯示上下行圖標,所以需要去掉上下行圖標功能,接下來實現相關功能…

MATLAB算法實戰應用案例精講-【圖像處理】計算機視覺(基礎篇)(二)

目錄 知識儲備 opencv基礎知識 01 什么OpenCV 02 如何部署OpenCV? 03 OpenCV模塊簡介 04 OpenCV基本數據結構

Shell循環:for(一)

語法結構&#xff1a; for 變量名 [ in 取值列表] do 循環體 done 示例1&#xff1a; 1、需求&#xff1a;自動循環創建10個用戶 2、演示&#xff1a; [rootlocalhost ~]# vim for.sh #腳本編寫 #!/bin/bash for i in {1..10} do useradd "user$…

Linux進程通信之共享內存

文章目錄 共享內存原理申請共享內存函數&#xff08;shmget&#xff09;參數key生成key值示例申請共享內存 掛接到進程地址空間函數(shmat)去關聯函數(shmdt)控制共享內存(shmctl)IPC_STATIPC_RMID ipcs其余進程獲取該共享內存進程間通信 進程間通信&#xff1a;IPC&#xff0c…

在openSUSE-Leap-15.5-DVD-x86_64中使用deepin-wine-6.0.0.19再使用金山打字通2016

在openSUSE-Leap-15.5-DVD-x86_64中使用deepin-wine-6.0.0.19再使用金山打字通2016 在openSUSE Software官網輸入關鍵字deepin-wine搜索得到fedora-deepin-wine6的作者是xuthus5 https://software.opensuse.org/package/fedora-deepin-wine6 在百度貼吧fedora吧的《fedora下的…

C++11『lambda表達式 ‖ 線程庫 ‖ 包裝器』

?個人主頁&#xff1a; 北 海 &#x1f389;所屬專欄&#xff1a; C修行之路 &#x1f383;操作環境&#xff1a; Visual Studio 2022 版本 17.6.5 文章目錄 &#x1f307;前言&#x1f3d9;?正文1.lambda表達式1.1.仿函數的使用1.2.lambda表達式的語法1.3.lambda表達式的使用…

數據結構-深度優先搜索Java實現

目錄 一、引言二、算法步驟三、原理演示遞歸實現非遞歸實現&#xff08;使用堆棧&#xff09; 四、代碼實戰五、結論 一、引言 深度優先搜索&#xff08;DFS&#xff09;是一種在圖或樹中進行搜索的算法&#xff0c;它沿著樹的深度遍歷樹的節點&#xff0c;盡可能深的搜索樹的分…

使用C++從0到1實現人工智能神經網絡及實戰案例

引言 既然是要用C++來實現,那么我們自然而然的想到設計一個神經網絡類來表示神經網絡,這里我稱之為Net類。由于這個類名太過普遍,很有可能跟其他人寫的程序沖突,所以我的所有程序都包含在namespace liu中,由此不難想到我姓劉。在之前的博客反向傳播算法資源整理中,我列舉…

CTF-PWN-QEMU-前置知識

文章目錄 QEMU 內存管理(QEMU 如何管理某個特定 VM 的內存)MemoryRegion gpa->hpaFlatView&#xff1a;表示MR 樹對應的地址空間FlatRange&#xff1a;存儲不同MR對應的地址信息AddressSpace&#xff1a;不同類型的 MemoryRegion樹RAMBlock總體簡化圖 QEMU 設備模擬 &#x…

【Java進階開發實戰】用Java中的Base64數據加密與解密處理

簡介 ? Base64編碼,是我們程序開發中經常使用到的編碼方法。它是一種基于用64個可打印字符來表示二進制數據的表示方法。它通常用作存儲、傳輸一些二進制數據編碼方法, 也是MIME(多用途互聯網郵件擴展,主要用作電子郵件標準)中一種可打印字符表示二進制數據的常見編碼方法…

Proteus下仿真AT89C51報“串行口通信失敗,請檢查電平適配是否正確。”解決辦法

在Proteus下進行AT89C51串行口仿真時&#xff0c;如果遇到“串行口通信失敗&#xff0c;請檢查電平適配是否正確”的錯誤提示&#xff0c;以下是一些解決辦法&#xff1a; 1. 了解AT89C51和外部設備的電平要求&#xff1a; 首先&#xff0c;了解AT89C51和外部設備之間的電平…

【華為OD機試python】分班【2023 B卷|100分】

【華為OD機試】-真題 !!點這里!! 【華為OD機試】真題考點分類 !!點這里 !! 題目描述 幼兒園兩個班的小朋友在排隊時混在了一起,每位小朋友都知道自己是否與前面一位小朋友是否同班,請你幫忙把同班的小朋友找出來。 小朋友的編號為整數,與前一位小朋友同班用Y表示,不同班…

C語言——文件操作

歸納編程學習的感悟&#xff0c; 記錄奮斗路上的點滴&#xff0c; 希望能幫到一樣刻苦的你&#xff01; 如有不足歡迎指正&#xff01; 共同學習交流&#xff01; &#x1f30e;歡迎各位→點贊 &#x1f44d; 收藏? 留言?&#x1f4dd; 我輩皆凡人&#xff0c;用一生鋪就的…

C++的new / delete 與 C語言的malloc/realloc/calloc / free 的講解

在C語言中我們通常會使用malloc/realloc/calloc來動態開辟的空間&#xff0c;malloc是只會開辟你提供的空間大小&#xff0c;并不會初始化內容&#xff1b;calloc不但會開辟空間&#xff0c;還會初始化&#xff1b;realloc是專門來擴容的&#xff0c;當你第一次開辟的空間不夠用…

目標檢測YOLO實戰應用案例100講-基于YOLO的小目標檢測改進算法(續)

目錄 3.3基于混合注意力的多尺度特征融合改進方法 3.3.1整體網絡架構 3.3.2特征金字塔的構建

Vue 2.0源碼分析-實例掛載的實現

Vue 中我們是通過 $mount 實例方法去掛載 vm 的&#xff0c;$mount 方法在多個文件中都有定義&#xff0c;如 src/platform/web/entry-runtime-with-compiler.js、src/platform/web/runtime/index.js、src/platform/weex/runtime/index.js。因為 $mount 這個方法的實現是和平臺…