详细分析Nginx中的proxy_pass 末尾斜杠

news2024/11/18 11:35:28

目录

  • 前言
  • 1. 基本知识
  • 2. Demo

前言

对于Nginx的讲解,更多推荐阅读:

  1. Nginx配置静态网页访问(图文界面)
  2. Nginx将https重定向为http进行访问的配置(附Demo)
  3. Nginx从入门到精通(全)
  4. 详细分析Nginx配置参数(附Demo)

1. 基本知识

这个知识点大有学问!

在 Nginx 中,proxy_pass 用于反向代理的关键指令,它决定 Nginx 将客户端请求转发到哪个上游服务器

proxy_pass 的末尾斜杠会影响请求的 URL 重写方式,因此理解它的细微差别非常重要

带斜杠和不带斜杠的区别

  1. 不带斜杠的 proxy_pass
    Nginx 不会将客户端请求的 URI 的一部分与 proxy_pass 的 URI 进行拼接
    location 配置中的 URI 部分直接被替换为 proxy_pass 指定的 URI

  2. 带斜杠的 proxy_pass
    Nginx 会将 location 中的匹配部分替换为 proxy_pass 后的 URI 部分,并保留客户端请求的 URI 剩余部分
    换句话说,Nginx 将请求的路径拼接到 proxy_pass 的 URL 后面

两种方式的区别(带 URI 和不带 URI)

Nginx 中 proxy_pass 有两种使用方式:

  1. 不带 URI 的方式
    proxy_pass 直接指向上游服务器的主机名或 IP 地址,不包括任何路径部分
    此时 location 匹配的整个 URI 将直接传递给上游服务器
location /api {
    proxy_pass http://backend;
}

在这个配置中,如果客户端请求 http://example.com/api/v1/users,Nginx 将向上游服务器发送请求为 http://backend/api/v1/users

  1. 带 URI 的方式
    proxy_pass 指定了一个完整的 URL,包括路径部分
    如果 proxy_pass URL 后面有斜杠,location 匹配的 URI 部分会被去掉,并把剩下的 URI 追加到 proxy_pass 的 URL 之后
location /api {
    proxy_pass http://backend/;
}

在这个配置中,如果客户端请求 http://example.com/api/v1/users,Nginx 会向上游服务器发送 http://backend/v1/users
/api 被去掉了,因为 proxy_pass 后面有斜杠

2. Demo

不带斜杠的配置

location /app {
    proxy_pass http://backend/app;
}

解释:

如果客户端发起请求 http://example.com/app/test,
Nginx 会将请求转发到 http://backend/app/test,/app 作为 proxy_pass 的一部分被保留

带斜杠的配置

location /app {
    proxy_pass http://backend/;
}

解释:
如果客户端发起请求 http://example.com/app/test,
Nginx 会将请求转发到 http://backend/test,/app 被移除,只保留 /test

总的来说:

  • 带斜杠的 proxy_pass:会保留请求路径的动态部分
  • 不带斜杠的 proxy_pass:将保留 proxy_pass 自己的路径,并直接替换 location 的匹配部分

实战中的Demo如下:

在这里插入图片描述

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

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

相关文章

[Java EE] TCP 协议

Author:MTingle major:人工智能 Build your hopes like a tower! 文章目录 文章目录​​​​​​​ 一. TCP 协议 二. TCP 特性 1. 确认应答(ack) 2. 超时重传 3. 连接管理 三次握手 四次挥手 TCP状态 4 滑动窗口 5. 流量控制 6.拥塞控制 7. 延时应答 8.捎带应答 9…

前端性能初探

前端监控 提升稳定性,更快的发现异常,定位异常,解决异常,js错误,接口异常,资源异常,白屏等。 关注用户体验,建立性能规范,长期关注优化,页面性能&#xff0c…

TopOn对话游戏魔客:2024移动游戏广告应如何突破?

TopOn对话游戏魔客:2024移动游戏广告应如何突破? 近年来,游戏广告投放的成本日益走高,ROI如何回正,素材如何创新等问题困扰着每一个广告主。在隐私政策的实施下,广告投放难度也在不断升级。 据data.ai发布…

MK米客方德SD NAND参考设计

一、电路设计 参考电路: R1~R5 (10K-100 kΩ)是上拉电阻,当SD NAND处于高阻抗模式时,保护CMD和DAT线免受总线浮动。 即使主机使用SD NAND SD模式下的1位模式,主机也应通过上拉电阻上拉所有的DATO-3线。 R6(RCLK&…

解决图片放大模糊

首先需要了解设备像素和CSS像素,CSS像素 是 Web 开发中的逻辑像素,设计者根据这些像素来布局页面。设备像素 是设备屏幕上的实际像素点数。 DPR 是 设备像素 和 CSS像素 的比率,所以进行缩放后,也需要对图片尺寸进行处理&#xf…

【HarmonyOS】鸿蒙自定义TabLayout示例

【HarmonyOS】自定义TabLayout代码示例,通过 Scroll 锚点 Tab 布局,滚动条会自动滚动使选中的标签居中显示。 class MyTabItem {label: string "";positionX: number -1; // 当前位置width: number -1; // 当前宽度constructor(label: stri…

OpenHarmony(鸿蒙南向)——平台驱动指南【HDMI】

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 HDMI(High Definition Multimedia Int…

VS Code设置合集

目录 VS Code设置合集1、汉化2、VS Code自动报错3、VS Code右键没有Open In Default Browser4、VS Code设置颜色主题5、修改默认缩进字符 VS Code设置合集 1、汉化 点击插件 → 搜索chinese → 点击install, 同时按住ctrl shift P → 搜索>configure displ…

架构师:消息队列的技术指南

1、简述 消息队列(Message Queue, MQ)是一种异步通信机制,允许系统的各个组件通过消息在彼此之间进行通信。消息队列通过解耦系统组件、缓冲高峰期请求和提高系统的可扩展性,成为分布式系统中不可或缺的一部分。 2、工作原理 消息队列的基本工作原理是生产者将消息发布到…

Lesson08---string(4)类

Lesson08—string类(4) c第八章string类的实现 文章目录 Lesson08---string类(4)前言一、计算机是怎么储存文字的1. 在此之前先思考一个问题2.编码表2.1 ascll码2.2unicode码2.3UTF码2.4gbk码 二、实现一个简单的string1.构造函数…

【LeetCode】每日一题 2024_9_21 边积分最高的节点(哈希)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动! 题目:边积分最高的节点 代码与解题思路 func edgeScore(edges []int) (ans int) {// 直接维护哈希最大值即可mp : map[int]int{}for i, v : range edges {mp[v] i// 如果多个节点的 边积分 相…

Flutter中使用FFI的方式链接C/C++的so库(harmonyos)

Flutter中使用FFI的方式链接C/C库(harmonyos) FFI plugin创建和so的配置FFI插件对so库的使用 FFI plugin创建和so的配置 首先我们可以根据下面的链接生成FFI plugin插件:开发FFI plugin插件 然后在主项目中pubspec.yaml 添加插件的依赖路径&…

PDF 秒变 JPG,2024 这些工具来助力

有些扫描仪默认将扫描文档保存为PDF格式,若事先未加留意,便可能累积大量PDF文件。然而,在需要将这些文件插入到其他文档或进行图形设计时,PDF格式可能会显得不够灵活或便捷。这时,将PDF转换为JPG图片格式就成为了一个实…

9.C++程序中的选择语句

选择语句一共分为两种:条件语句和开关语句 其中条件语句叫if语句,常见的形式为:if ... else ... ; 再复杂一些为if... else if ... else ... ; 开关语句又叫switch语句,类型于开关的使用形式常见的有 switch (var) case : ... b…

ai写论文哪个软件好?分享4款ai论文写作工具软件

在当前的学术研究和论文写作领域,AI技术的应用已经成为一种趋势。AI论文写作工具不仅能够提高写作效率,还能帮助研究者生成高质量的论文。以下是四款值得推荐的AI论文写作工具软件,其中特别推荐千笔-AIPassPaper。 1. 千笔-AIPassPaper 传送…

Cluade 3.5 Sonnet 提示词泄露

prompt 翻译: The notebook currently demonstrates support for a two agent setup. Support for GroupChat is currently in development.

EF Core优化技巧之预热处理

1. 前言 今天和听到同事们在讨论一个关于使用EFCore时,为什么第一次查询数据库总是很慢的原因。我们在工作中经常使用EFCore进行数据访问,但发现每次第一次查询都需要较长的时间,这给我们带来了困扰。因此,我们聚在一起&#xff…

Redis实战--Redis应用过程中出现的热门问题及其解决方案

Redis作为一种高性能的key-value数据库,广泛应用于缓存、消息队列、排行榜等场景。然而,在实际应用中,随着业务规模的不断扩大和访问量的持续增长,缓存系统也面临着诸多挑战,其中最为典型的便是缓存穿透、缓存击穿和缓…

Ansible集群服务部署案例

案例描述 本案例共讲述了多个节点部署Elk集群日志分析系统,分别在三个节点使用ansible部署Kibana、Logstash以及Elasticsearch服务。 案例准备 1. 规划节点 IP 主机名 节点 192.168.100.25 ansible Ansible节点 192.168.100.35 node1 Elasticsearch/Kiba…

shell用文件管理备份文件路径

从文件中读取文件路径 while IFS read -r s; do:这行代码启动一个 while 循环,逐行读取 001.sh 文件的内容。 IFS:将内部字段分隔符(IFS)设置为空,确保读取整行而不被默认的空格和换行符分隔。这样可以保…