nginx(六十)proxy模块(一)proxy_pass指令

news2024/11/20 1:45:44

一   proxy模块处理请求的流程

①  流程图

说明: nginx从client接收的是'http协议','转发给上游'的也是http协议

备注: 后续根据'处理'请求的流程,来讲解'相关指令'

二    proxy_pass

①  基本解读

说明: proxy_pass是一个'动作'指令

②  proxy_pass的形式

​重点: 理解'proxy_pass'的构成

1)"协议[http、https]"+"://"+"域名[ip]:端口"+"option[可选]的attach_url"

2)"协议[http、https]"+"://"+"upstream_id"+"[可选]的attach_url"

注意:变量可以用在'proxy_pass'组成的'任何'一部分

++++++++'proxy_pass的形式'++++++++
 
字面值ip、'域名'、'upstream_id'、'变量[表示域名]' -->四种方式设置'上游[源站]'地址
 
1)有'变量',先'预'编译,'reload|restart'不会报错,等'客户端的请求'来了再'handle处理'
 
    方式1: '自定义变量'

         resolver 114.114.114.114 valid=30s
 
         set $target www.baidu.com;
 
         proxy_pass http://$target;
 
    方式2:  '客户端传递的http变量'
 
         proxy_pass http://http_target;
 
特性:服务'启动'的时候,'绕过域名检查';有'请求过来'的时候,需要'resolver'指令进行域名解析
 
2)无'变量'

③   nginx dns缓存的问题

1)域名用'变量(动态域名解析)'代替,无法使用'upstream'模块的'健康检查、会话保持'等功能

dns解析引发对proxy_pass的思考

nginx dns缓存的问题

dns解析的问题

动态和静态dns解析

④  attach_url

(1)案例1

测试1:  proxy_pass '不'携带 'attach_url'

 

结论: proxy_pass '不携带' attach_url,会将'client原始的url'转发给上游

(2)案例2

测试1:  proxy_pass '携带attach_url',attach_url为'/'

request_uri: '/ceshi/index.html'

location 匹配 '/ceshi/',剩余'index.html' 添加到 'attach_url --> / ' 后面

后端收到的请求: '/index.html'

(3) 案例3

+++++++++++ "解读" +++++++++++

1)request_uri: '/ceshi/hello.html'

2) location: '/ceshi/'

3) attatch_url: '/abc'

4) location匹配后,剩余的'hello.html'追加到proxy_pass的'attach_url'中 --> '/abchello.html'

⑤   nginx无法确认attach_url

(1)案例1

1)原来'错误'的理解
 
  当'location'带有'~、~* [以~开头]'正则时,proxy_pass'不允许'有'URI [变量、文本、还是混合的形式]'
 
2) '修证后'的理解
 
  如果location使用'正则'表达式,proxy_pass中'不能指定[裸]path',除非proxy_pass中包含'变量'
 
+++++++++  "以下是两个对比案例"  +++++++++
 
重点'关注': location中指定"正则表达式"和proxy_pass配置的"attach_url中带变量"混合场景

参考连接 

如果'location'使用'正则表达式',proxy_pass中'不能'指定path,除非proxy_pass中包含'变量'

++++++++++++++  "扩展学习"  ++++++++++++++
 
location /abc/d {
  if ( $request_uri ~ /abc/d/(.+) ) {
    set $args $1;
  }
  proxy_pass https://backend/ef/$args;
}
 
============'等价'方式============
 
location ~ /abc/d/(.+) {
  proxy_pass https://backend/ef/$1;
}

(2)案例2

1)rewrite改变'uri',此时'proxy_pass'的'attach_url'被'ignored'忽略

场景:proxy_pas有'attach_url',但是又要将'原始请求'转发到'后端',使用'$request_uri'变量

2)使用proxy_pass中指定的域名加上'rewrite中指定的path路径'即为转发后的url

  

(3) 案例3

1)当'attach_url'中携带'变量',会用'proxy_pass中解析后的uri'替换'原始url',作为最终转发到后端的'uri'
 
备注:注意与'案例1'的差异点

案例讲解  案例学习  使用变量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/29294.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【题型总结】找到第n个自定义数 | 丑数系列 + 神奇数字

文章目录找到第n个自定义数丑数【LC263】丑数Ⅱ【LC264】优先队列多指针超级丑数【LC313】优先队列【超时】多指针第N个神奇数字【LC878】找规律二分查找数学丑数Ⅲ【LC1201】二分查找数学总结找到第n个自定义数 因为神奇数字做了相关的题目,个人建议做题顺序&…

涨知识!Python 的异常信息还能这样展现

【导语】:在日常开发的过程中,当代码报错时,我们通常要不断打印、阅读traceback提示信息,来调试代码,这篇文章介绍了如何实现一个Exception Hooks,使得traceback模块的提示信息更加精确;同时还介…

java项目-第159期ssm超市管理系统_ssm毕业设计_计算机毕业设计

java项目-第159期ssm超市管理系统-ssm毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm超市管理系统》 该项目分为2个角色,管理员、员工。 员工登录后台主要负责商品的出入库,以及个人事项办理,比如: 上…

技术分享| 快对讲视频调度功能说明

随着计算机技术的日趋成熟,融合调度方案已经在行业信息化中普及,由于近几年实时音视频能力的提升,融合调度中的视频调度方案也在往实时性、高清方向靠拢。快对讲视频调度正是结合了视频监控,以及实时通信的特性,在市面…

传奇GOM引擎单机架设图文教程

T:准备下载好服务端(版本)gom引擎架设 选择GOM引擎版本 注;版本可以去论坛有免费,电脑还需要下载安装好客户端。 1.首先下载好版本后会有2个压缩包,一个是版本,一个是补丁, 简单来说架设分三部&#xff1…

Scrum 四个会议的正确召开方式

敏捷开发有一些重要的实践方法,可以帮助团队更快地适应敏捷开发框架。这些方法不能简单照搬执行,比如,只在瀑布开发模式下中加入 Scrum 的四个会议,这无法让瀑布团队转成敏捷团队。敏捷转型需要深入理解概念和思维,团队…

【Linux】第十四章 多线程(生产者消费者模型+POSIX信号量)

🏆个人主页:企鹅不叫的博客 ​ 🌈专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接:代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

JavaSE中split方法详细原理讲解分析

文章目录方法1:split(String [regex](https://so.csdn.net/so/search?qregex&spm1001.2101.3001.7020))入门案例1入门案例2入门案例3入门案例4分隔符三个特殊位置特殊案例1特殊案例2方法2:split(String regex,int limit)limit用法:进阶案例:limit>0限制分割次数limit&l…

图神经网络关系抽取论文阅读笔记(二)

1 用于关系抽取的生成式参数图神经网络 论文:Graph Neural Networks with Generated Parameters for Relation Extraction(2019 ACL) 1.1 创新点 传统的图神经网络在进行NLP任务时,图的拓扑结构都是预先定义好的,之后再…

已解决OSError: [Errno 22] Invalid argument

已解决OSError: [Errno 22] Invalid argument 文章目录报错代码报错翻译报错原因解决方法帮忙解决报错代码 粉丝群里面的一个粉丝用Python读取文件的时候,发生了报错(跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助…

PTA题目 前世档案

网络世界中时常会遇到这类滑稽的算命小程序,实现原理很简单,随便设计几个问题,根据玩家对每个问题的回答选择一条判断树中的路径(如下图所示),结论就是路径终点对应的那个结点。 现在我们把结论从左到右顺序…

UnityVR一体机报错:GL_OUT_OF_MEMORY,[EGL] Unable to acquire context

一、 报错信息一览 (1) [EGL] Unable to acquire context: E Unity : [EGL] Unable to acquire context: EGL_BAD_SURFACE: An EGLSurface argument does not name a valid surface (window, pixel buffer or pixmap) configured for GL rendering. 解决…

AQS源码解析 4.Condition条件队列入门_手写BrokingQueue

AQS源码解析—Condition条件队列入门_手写BrokingQueue Condition 条件队列介绍 AQS 中还有另一个非常重要的内部类 ConditionObject,它实现了 Condition 接口,主要用于实现条件锁。ConditionObject 中也维护了一个队列,这个队列主要用于等…

动态规划算法学习三:0-1背包问题

文章目录前言一、问题描述二、DP解决步骤1、最优子结构性质2、状态表示和递推方程3、算法设计与分析4、计算最优值5、算法实现6、缺点与思考前言 一、问题描述 二、DP解决步骤 1、最优子结构性质 2、状态表示和递推方程 子问题可由两个参数确定:待考虑装包的物品…

【C/调试实用技巧】—作为程序员应如何面对并尝试解决Bug?

小菜坤日常上传gitee代码:https://gitee.com/qi-dunyan 关于C语言的所有由浅入深的知识,都存放在专栏【c】 ❤❤❤ 个人简介:双一流非科班的一名小白,期待与各位大佬一起努力! 推荐网站:cplusplus.com 目录…

Springboot集成ItextPdf

目录 一、概述 二、Itext API 1.PDF文档生成 3.常用对象 一、文档对象 二、操作对象 三、内容对象 四、表格对象 四、常用案例 一、水印 三、页眉页脚 四、合并多个PDF 五、表单PDF 六、模板PDF 一、html模板 二、使用工具构建PDF模板 7、HTML转PDF 8、删除页…

同花顺_知识_庄家技法_4拉升技法

写在前面: 文中知识内容来自书籍《同花顺炒股软件从入门到精通》 目录 1. 拉升时机的选择 1)大盘走势稳健时 2)重大利好出台前后 3)进行一次凶狠的打压之后 4)大市偏弱时 5)图形及技术指标修好之时 …

FPGA开发(4)——AXI_LITE总线协议

一、AXI总线简介 对于axi总线的学习我主要是参考了赛灵思的ug1037文档以及arm的INI0022D手册,对其中的内容做了总结。 AXI是amba总线的一种,包含三种,axi full、axi lite和axi stream。 AXI工作:axi接口包含了五组通道&#xf…

如何快速用一条命令配置好本地yum源(6/7/8版本)

一,挂载ISO安装镜像 挂载方式分两种: 1.上传iso安装镜像到服务器主机的指定目录,比如/setup/os为例 mount -o loop /setup/os/iso镜像包名称 /mnt 2.直接虚拟机或者物理主机挂载iso安装镜像 mount /dev/cdrom /mnt mount/dev/sr0 /mnt 3.挂载…

【计算机网络】网络层:路由器的构成

路由器工作在网络层,用于互连网络,主要工作是转发分组。 把某个输入端口收到的分组,按照分组要去的目的网络,把该分组从路由器的某个合适的输出端口转发给下一跳路由器。 (根据目的网络的IP地址转发分组)…