nginx简单配置四种携带/时的拼接关系

一、代理静态文件

1、 当 location 尾部有 /,且代理地址尾部也有 / 时:(常用)

location /test11/ {root      /usr/local/nginx/html/;
}
则访问 http://ip/test11/aaa,实际访问的是/usr/local/nginx/html/aaa

2、 当 location 尾部有 /,代理地址尾部没有 / 时:(几乎不用)

location /test10/ {root      /usr/local/nginx/html;
}
则访问 http://ip/test10/aaa,实际访问的是/usr/local/nginx/html/aaa

3、 当 location 尾部没有 /,代理地址尾部有 / 时:(和4一致)

location /test01 {root      /usr/local/nginx/html/;
}
则访问 http://ip/test01/aaa,实际访问的是/usr/local/nginx/html/test01/aaa

4、 当 location 尾部没有 /,代理地址尾部没有 / 时:(常用)

location /test00 {root      /usr/local/nginx/html;
}
则访问 http://ip/test00/aaa,实际访问的是/usr/local/nginx/html/test00/aaa
则访问 http://ip/test00xx/aaa,实际访问的是/usr/local/nginx/html/test00xx/aaa

二、代理地址(尾部跟一个与location相同的路径)

下图是四种不同的情况下的映射关系截图

1、 当 location 尾部有 /,且代理地址尾部也有 / 时:(常用)

location /testproxy11/ {proxy_pass      http://127.0.0.1:10000/testproxy11/;
}
则访问 http://ip/testproxy11/aaa,实际访问的是http://127.0.0.1:10000/testproxy11/aaa

2、 当 location 尾部有 /,代理地址尾部没有 / 时:(几乎不用)

location /testproxy10/ {proxy_pass      http://127.0.0.1:10000/testproxy10;
}
则访问 http://ip/testproxy10/aaa,实际访问的是http://127.0.0.1:10000/testproxy10aaa

3、 当 location 尾部没有 /,代理地址尾部有 / 时:

location /testproxy01 {proxy_pass      http://127.0.0.1:10000//testproxy01/;
}
则访问 http://ip/testproxy01/aaa,实际访问的是http://127.0.0.1:10000/testproxy01//aaa(代理后出现的是双//)
则访问 http://ip/testproxy01aaa,实际访问的是http://127.0.0.1:10000/testproxy01/aaa

4、 当 location 尾部没有 /,代理地址尾部没有 / 时:(常用)

location /testproxy00 {proxy_pass      http://127.0.0.1:10000/testproxy00;
}
则访问 http://ip/testproxy00/aaa,实际访问的是http://127.0.0.1:10000/testproxy00/aaa访问 http://ip/testproxy00aaa,实际访问的是http://127.0.0.1:10000/testproxy00aaa

三、下面是关于代理地址后缀与location不同时的映射(常用)

这是四种不同的配置

location /testproxync11/ {proxy_pass http://127.0.0.1:10000/testproxy/;
}
location /testproxync10/ {proxy_pass http://127.0.0.1:10000/testproxy;
}
location /testproxync00 {proxy_pass http://127.0.0.1:10000/testproxy;
}
location /testproxync01 {proxy_pass http://127.0.0.1:10000/testproxy/;
}

上面四种配置分别按照不同方式访问后会是下面的结果

request: "GET /testproxync11/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxy/aaa"
request: "GET /testproxync10/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxyaaa"
request: "GET /testproxync00/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxy/aaa"
request: "GET /testproxync00aaa HTTP/1.1",  upstream: "http://127.0.0.1:10000/testproxyaaa"
request: "GET /testproxync01aaa HTTP/1.1",  upstream: "http://127.0.0.1:10000/testproxy/aaa"
request: "GET /testproxync01/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxy//aaa"

四、下面是关于代理地址无自定义后缀时的映射(常用)

location /testproxynp11/ {proxy_pass http://127.0.0.1:10000/;
}
location /testproxynp10/ {proxy_pass http://127.0.0.1:10000;
}
location /testproxynp00 {proxy_pass http://127.0.0.1:10000;
}
location /testproxynp01 {proxy_pass http://127.0.0.1:10000/;
}

上面四种配置分别按照不同方式访问后会是下面的结果

request: "GET /testproxynp10/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxynp10/aaa"
request: "GET /testproxynp11/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/aaa"
request: "GET /testproxynp01/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000//aaa"
request: "GET /testproxynp01aaa HTTP/1.1",  upstream: "http://127.0.0.1:10000/aaa"
request: "GET /testproxynp00aaa HTTP/1.1",  upstream: "http://127.0.0.1:10000/testproxynp00aaa"
request: "GET /testproxynp00/aaa HTTP/1.1", upstream: "http://127.0.0.1:10000/testproxynp00/aaa"

总结

声明:

后缀:/最后的斜杠

11:location有后缀且proxy_pass也有后缀

00:location无后缀且proxy_pass也无后缀

根据以上描述、论证以及平时的工作经历,可以发现,对于10和01两种类型平时慎用,这两种不好把握,也不符合常规,平时若想要代理路径,请选择使用11和00的方式
使用11时,会自动截取掉location上的路径,讲后面的路径映射到代理地址中;
使用00时,会自动将location路径中的所有路径平移到代理地址中,比如平时想要通过/aaa代理到 /aaab、 /aaac、/aaad这种,就可以直接使用/aaa一个location映射即可

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

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

相关文章

Flask 入门7:使用 Flask-Moment 本地化日期和时间

如果Web应用的用户来自世界各地,那么处理日期和时间可不是一个简单的任务。服务器需要统一时间单位,这和用户所在的地理位置无关,所以一般使用协调世界时(UTC)。不过用户看到 UTC 格式的时间会感到困惑,他们…

数据库-MySQL 实战项目——房屋租赁管理系统数据库设计与实现(附源码)

一、前言 需求: 房屋租赁管理系统主要完成功能为: 房屋信息管理出租者信息管理求租者信息管理房屋出租信息管理系统管理(员工信息管理、绩效管理等) 备注: 1. 一个房屋有多个求租者。(一对多&#xff0…

【10秒极速开服】幻兽帕鲁全自动部署服务器教程

幻兽帕鲁太火了,官方palworld服务器不稳定?不如自建服务器,基于腾讯云幻兽帕鲁服务器成本32元全自动部署幻兽帕鲁服务器,超简单有手就行,全程自动化一键部署10秒钟即可搞定,无需玩家手动部署幻兽帕鲁游戏程…

Agile Initiative, Epic, and Story/Task

Stories, also called “user stories,” are short requirements or requests written from the perspective of an end user. stories are something the team can commit to finish within a one- or two-week sprint.Epics are large bodies of work that can be broken do…

网络流问题求解及Gurobi+Python代码(最大流/最小成本网络流/多商品网络流)

目录 1.最大流问题 1.1 问题描述 1.2 Ford-Fulkerson算法 1.3 Gurobi测试 2.最小成本网络流问题 2.1 问题描述 2.2 供应链规划案例 3.多商品网络流问题 3.1 问题描述及模型 3.2 Gurobi测试 Gurobi求解代码:GitHub - bujibujibiuwang/Network-Flow-Probl…

机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

文章目录 1.K-近邻算法思想2.K-近邻算法(KNN)概念3.电影类型分析4.KNN算法流程总结5.k近邻算法api初步使用机器学习库scikit-learn1 Scikit-learn工具介绍2.安装3.Scikit-learn包含的内容4.K-近邻算法API5.案例5.1 步骤分析5.2 代码过程 1.K-近邻算法思想 假如你有一天来到北京…

代码随想录算法训练营第42天 | 01背包问题理论基础 + 416.分割等和子集

今日任务 01背包问题,你该了解这些! 01背包问题,你该了解这些! 滚动数组 416. 分割等和子集 01背包问题 二维数组 理论基础:代码随想录 题目链接:题目页面 01 背包 有n件物品和一个最多能背重量为w 的…

【C++】组合数

题目描述 组合数表示的是从n个物品中选出m个物品的方案数。举个例子,从 (1, 2, 3) 三个物品中选择两个物品可以有 (1, 2),(1, 3),(2, 3) 这三种选择方法。 根据组合数的定义,我们可以给出计算组合数的一般公式: 其中…

C++ 日期计算器

日期计算器 概要 Date类的规划Date类的实现Date 构造函数Date 拷贝构造函数~Date 析构函数GetMonthDay 求某年某月的天数operator 赋值操作符重载operator 加等操作符重载operator 加号操作符重载operator- 减等操作符重载operator- 减法操作符重载 (日期 - 天数&am…

2023年第四季度硬盘容量强势增长9%

在2023年第四季度(CQ4 23),硬盘驱动器(HDD)市场的总容量出货量环比增长9%,达到214EB,而单位出货量保持在2900万块不变。其中,近线存储(Nearline)硬盘的容量出…

Java基于微信小程序的驾校报名小程序,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

JVM双亲委派机制

双亲委派模型是一种组织类加载器之间关系的一种规范,他的工作原理是:如果一个类加载器收到了类加载的请求,它不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,这样层层递进,最终所有的加载请求都被传到最顶层的启动类加载器中,只有当父类加载器无法完成这个加载…

基于SSM的实习管理系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的实习管理系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Spri…

Verilog刷题笔记19

题目: A common source of errors: How to avoid making latches When designing circuits, you must think first in terms of circuits: I want this logic gate I want a combinational blob of logic that has these inputs and produces these outputs I want…

【高阶数据结构】B-树详解

文章目录 1. 常见的搜索结构2. 问题提出使用平衡二叉树搜索树的缺陷使用哈希表的缺陷 3. B-树的概念4. B-树的插入分析插入过程分析插入过程总结 5. B-树的代码实现5.1 B-树的结点设计5.2 B-树的查找5.3 B-树的插入实现InsertKey插入和分裂测试 6. B-树的删除(思想&…

使用WPS制作三线表

点击边框和底纹点击1、2、3、4并且应用于表格点击确定 再次选中表格点击右键表格属性选择边框和底纹 选中表格第一行右键点击表格属性选择边框和底纹 如果表格中存在虚线

【Linux开发工具】gcc/g++的使用

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.前言2.gcc/g使用方…

【自动化测试】---Selenium+Java

1.自动化测试分类 接口自动化测试UI自动化测试(移动端自动化测试、Web端自动化测试) 2.选择Selenium作为web自动化工具原因(面试题) 开源免费支持多个浏览器支持多个系统支持多语言Selenium包提供很多供测试使用的API 3.自动化是什…

C++内存模型的内存布局

C内存模型的内存布局 什么是内存模型内存布局及作用C程序的内存布局 本文章介绍了C程序的内存布局,并附有一段演示 数据区和 栈区存储不同类型变量的代码示例。 什么是内存模型 在计算机科学中,程序的内存模型是指程序在内存中的组织结构和存储方式的抽…

编译原理实验2——自上而下语法分析LL1(包含去消除左递归、消除回溯)

文章目录 实验目的实现流程代码运行结果测试1(含公共因子)测试2(经典的ii*i文法,且含左递归)测试3(识别部分标识符) 总结 实验目的 实现自上而下分析的LL1语法分析器,给出分析过程 …