首页 > 系统相关 >Nginx服务器配置---反向代理服务时proxy_pass的转发规则

Nginx服务器配置---反向代理服务时proxy_pass的转发规则

时间:2024-11-20 17:29:23浏览次数:1  
标签:127.0 http 代理服务 0.1 9090 --- Nginx abc url

nginx是由俄罗斯开发的一款http web服务器,我们经常用这款服务器做负载均衡和反向代理。
今天我们就来聊聊Nginx作为反向代理时,如何进行路由配置。
假设你已经部署好Nginx了,我们进入Nginx安装目录,进入nginx.conf文件。
找到http节点下的server节点,值是一个json。
在json中 有一个location的指令,就是代表转发。
一般是这样的形式:

location {$path} {
        proxy_pass {$url};
}

{$path}代表匹配源url的部分,proxy_pass 后的{$url}则是代表要转发的目标url,

这里一般会涉及到转发时是否携带原有路径的问题。举个例子:

location /abc {
        proxy_pass http://127.0.0.1:9090/;
}

如果我们请求 http://127.0.0.1:80/abc (假设nginx的服务器的是80)

则请求的路径path是/abc,此时会匹配到该location指令的规则 /abc,则请求会转发的本机的9090端口。
如果我们请求 http://127.0.0.1:80/abc/cloud
则请求的路径path是/abc/cloud,(防盗连接:本文首发自http://www.cnblogs.com/jilodream/ )此时会匹配到该location指令的规则,则请求会转发的本机的9090端口。
但是问题来了,转发9090端口时,/abc要不要补充到后边?后边的/cloud部分要不要追加?
这里是和$url是否包含路径有关系,无斜杠就代表不包含路径,有斜杠就代表包含路径。

一、无路径场景

如果:$url为http://127.0.0.1:9090 表示无路径
此种情况,会将源url的路径部分直接追加
举几个例子
(1)

location /abc {
        proxy_pass http://127.0.0.1:9090;
}

请求http://127.0.0.1:80/abc/bcd

则跳转到http://127.0.0.1:9090/abc/bcd
(2)

location /abc/bcd {
        proxy_pass http://127.0.0.1:9090;
}

请求http://127.0.0.1:80/abc/bcd

则跳转到http://127.0.0.1:9090/abc/bcd
(3)

location /abc/bcd/ {
        proxy_pass http://127.0.0.1:9090;
}

请求http://127.0.0.1:80/abc/bcd/

则跳转到http://127.0.0.1:9090/abc/bcd/

总结就是一句话,proxy_pass 后配置的目标url,如果没有路径信息(包括/),则会将源url的路径部分,直接追加到目标url中

二、有路径场景

如果:$url为http://127.0.0.1:9090/ 表示有路径
如果:$url为http://127.0.0.1:9090/gov 表示有路径
如果:$url为http://127.0.0.1:9090/gov/ 表示有路径
此种情况,会将源url的路径部分去掉已匹配部分后,将剩余部分直接追加到目标url后,如图:

 

举几个例子

(1)

location /abc/ {
        proxy_pass http://127.0.0.1:9090/;
}

请求http://127.0.0.1:80/abc/bcd

则跳转到http://127.0.0.1:9090/bcd
分析:
源url的路径部分是: “/abc/bcd”
与匹配规则“/abc/”匹配成功
匹配后剩余部分是“bcd”“http://127.0.0.1:9090/”追加“bcd”
则最终会跳转到http://127.0.0.1:9090/bcd
(2)

location /abc {
        proxy_pass http://127.0.0.1:9090/gov;
}

请求http://127.0.0.1:80/abc/bcd

则跳转到http://127.0.0.1:9090/gov/bcd
(3)

location /abc/b {
        proxy_pass http://127.0.0.1:9090/gov/;
}

请求http://127.0.0.1:80/abc/bcd/

则跳转到http://127.0.0.1:9090/gov/cd/
(4)

location /abc/b {
        proxy_pass http://127.0.0.1:9090/gov/;
}

请求http://127.0.0.1:80/abc/b/cd/

则跳转到http://127.0.0.1:9090/gov//cd/

总结就是一句话,proxy_pass 后配置的目标url,如果有路径信息(包括/),则会将源url的路径部分匹配后剩余的部分路径,直接追加到目标url中

现在还有一个问题就是,(防盗连接:本文首发自http://www.cnblogs.com/jilodream/ )如果有多个匹配规则都命中的话,那么nginx会怎么处理呢?

如下:

location / {
        proxy_pass http://127.0.0.1:9091/gov/;
}
location /abc {
        proxy_pass http://127.0.0.1:9092/gov/;
}
location /abc/ai {
        proxy_pass http://127.0.0.1:9093/gov/;
}

请求http://127.0.0.1:80/abc/ai/

则nginx 会按照最大匹配原则的情况,选择匹配对象,此时就会将请求转发至9093端口

标签:127.0,http,代理服务,0.1,9090,---,Nginx,abc,url
From: https://www.cnblogs.com/jilodream/p/18558874

相关文章

  • 后端-Result.java工具类和SystemCode.java工具类
    一.Result.java工具类packagecom.hs.util;/** *响应格式类 *作用:统一服务端的响应数据格式 */publicclassResult<T>{  /**   *响应代码   */  privateintstatus;  /**   *响应信息   */  privateStringmessa......
  • Python那些事儿 - 列表的增删改查
    第八回 登峰造极前言上一回给大家分享了列表的定义、索引、遍历以及列表推导式,这一回我们对列表的增删改查进行详细的讲解。让我们一起在知识的海洋里遨游吧!......
  • 开源模型应用落地-LangChain实用小技巧-检索器-集成多种检索器(十八)
    一、前言   在LangChain中,检索器是一个重要模块,主要用于从数据源中检索与查询相关的文档或片段。它能高效进行信息检索,通过快速筛选和语义理解从大规模文本数据中找到相关内容,支持复杂应用场景如检索增强生成和多源数据整合,还具有可定制性和灵活性,可选择不同嵌入模型和索......
  • 《技术规划与技术平台开发管理赋能》公开课(2024年12月20-21日)
    【课程背景】随着国内外高科技领域的产品竞争越来越激烈,产品和解决方案的创新尤其是核心技术的自主创新已成为中国企业乃至整个中国商业社会转型的重要手段。公司的技术战略是基于战略高度对产品机遇和技术发展趋势的前瞻性认识,如果没有这种前瞻性的认识,产品、平台和技术就会在......
  • 微信小程序-瀑布流实现的几种方式
    ​第一种:推荐固定条数的数据(刷新需要整体数据刷新的那种)​编辑 ​编辑wxss.gallery{padding:20rpx;/*定义列数*/column-count:2;/*列间距*/column-gap:20rpx;}.item{break-inside:avoid;}/*图片本身*/.itemimage{border-radius:10r......
  • NL-SLAM for OC-VLN: Natural Language Grounded SLAM for Object-Centric VLN
    NL-SLAMforOC-VLN:NaturalLanguageGroundedSLAMforObject-CentricVLN用于OC-VLN的NL-SLAM:用于以对象为中心的VLN的基于自然语言的SLAM【NL-SLAMforOC-VLN:NaturalLanguageGroundedSLAMforObject-CentricVLN】文章链接:[2411.07848]NL-SLAMforOC-VL......
  • ESP32-CAM模块介绍
    一、引言    在当今的物联网时代,各种智能设备层出不穷。ESP32-CAM模块以其强大的功能、小巧的尺寸和高性价比,成为了众多开发者和爱好者的热门选择。本文将详细介绍ESP32-CAM模块的特点、功能、应用场景以及使用方法。二、ESP32-CAM模块概述    ESP32-CAM是一......
  • JAVA题--1
    1.求一个整数,在内存当中存储时,二进制1的个数。2.给定两个数,求这两个数的最大公约数   例如: 输入:2040  输出:203.求出0~n之间的所有“水仙花数”并输出。(“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1^3+5^3+3^3,则153是一个“水......
  • springboot汽车租赁智慧管理-计算机毕业设计源码96317
    目 录第1章引 言1.1选题背景1.2研究现状1.3论文结构安排第2章系统的需求分析2.1系统可行性分析2.1.1技术方面可行性分析2.1.2经济方面可行性分析2.1.3法律方面可行性分析2.1.4操作方面可行性分析2.2系统功能需求分析2.3系统性需......
  • 主流的免费开源社区版的安全扫描工具汇总---持续更新
    2024开源免费安全扫描工具这些开源免费社区版的安全扫描工具各具特色,适用于不同的网络安全需求。用户可以根据自己的实际情况选择适合自己的工具来加强网络安全防护。同时,由于这些工具都是开源的,用户还可以根据自己的需求进行定制和扩展。     开源免费社区版的安......