Nginx(十五) proxy_pass和proxy_redirect指令的组合测试

news2025/1/11 9:03:07

Nginx反向代理配置文件参数详解请参考 Nginx(十三) 配置文件详解 - 反向代理(超详细)

测试1:proxy_redirect  http://127.0.0.1:8080/three/  http://www.read*******l.cn:8688/four/;

http {
    server {
        listen 8688;
	    server_name www.read*******l.cn;
	    location /one/ {
	        proxy_pass  http://127.0.0.1:8080/two/;
	        proxy_redirect  http://127.0.0.1:8080/three/  http://www.read*******l.cn:8688/four/;
	    }
    }

    server {
        listen 8080;
	    server_name www.read*******l.cn;
	    location /two/ {
	        return  301  http://127.0.0.1:8080/three/world;
	    }
    }
}

客户端发送请求:http://www.read*******l.cn:8688/one/hello

客户端最终请求:http://www.read*******l.cn:8688/four/world

测试2:proxy_redirect  http://127.0.0.1:8080/three/   /four/;

http {
    server {
        listen 8688;
	    server_name www.read*******l.cn;
	    location /one/ {
	        proxy_pass  http://127.0.0.1:8080/two/;
	        proxy_redirect  http://127.0.0.1:8080/three/  /four/;
	    }
    }

    server {
        listen 8080;
	    server_name www.read*******l.cn;
	    location /two/ {
	        return  301  http://127.0.0.1:8080/three/world;
	    }
    }
}

客户端发送请求:http://www.read*******l.cn:8688/one/hello

客户端最终请求:http://www.read*******l.cn:8688/four/world

proxy_redirect  http://127.0.0.1:8080/three/  /four/;

相当于

proxy_redirect  http://127.0.0.1:8080/three/  http://www.read*******l.cn:8688/four/;

测试3:proxy_redirect  http://127.0.0.1:8688/three/  /;

http {
    server {
        listen 8688;
	    server_name www.read*******l.cn;
	    location /one/ {
	        proxy_pass  http://127.0.0.1:8080/two/;
	        proxy_redirect  http://127.0.0.1:8080/three/  /;
	    }
    }

    server {
        listen 8080;
	    server_name www.read*******l.cn;
	    location /two/ {
	        return  301  http://127.0.0.1:8080/three/world;
	    }
    }
}

客户端发送请求:http://www.read*******l.cn:8688/one/hello

客户端最终请求:http://www.read*******l.cn:8688/world

测试4:proxy_redirect  default;

http {
    server {
        listen 8688;
	    server_name www.read*******l.cn;
	    location /one/ {
	        proxy_pass  http://127.0.0.1:8080/two/;
	        proxy_redirect  default;
	    }
    }

    server {
        listen 8080;
	    server_name www.read*******l.cn;
	    location /two/ {
	        return  301  http://127.0.0.1:8080/three/world;
	    }
    }
}

客户端发送请求:http://www.read*******l.cn:8688/one/hello

客户端最终请求:http://127.0.0.1:8080/three/world

测试5:proxy_redirect  default;

http {
    server {
        listen 8688;
	    server_name www.read*******l.cn;
	    location /one/ {
	        proxy_pass  http://127.0.0.1:8080/two/;
	        proxy_redirect  default;
	    }
    }

    server {
        listen 8080;
	    server_name www.read*******l.cn;
	    location /two/ {
	        return  301  http://127.0.0.1:8080/two/world;
	    }
    }
}

客户端发送请求:http://www.read*******l.cn:8688/one/hello

客户端最终请求:http://www.read*******l.cn:8688/one/world

根据测试4和测试5的结果可得出以下结论

        当proxy_redirect配置为default时,如果proxy_pass 的URL与响应头中Location字段的URL 部分内容完全匹配,则用server_name、listen port和当前location的URI组合替换掉Location中与proxy_pass相匹配的部分。

        proxy_pass相当于是 proxy_redirect redirect replacement 中的 redirect 参数,

        server_name + listen port + 当前location的URI 组合起来相当于 proxy_redirect redirect replacement 中的 replacement 参数。

测试6:proxy_redirect  off;

http {
    server {
        listen 8688;
	    server_name www.read*******l.cn;
	    location /one/ {
	        proxy_pass  http://127.0.0.1:8080/two/;
	        proxy_redirect  off;
	    }
    }

    server {
        listen 8080;
	    server_name www.read*******l.cn;
	    location /two/ {
	        return  301  http://127.0.0.1:8080/three/world;
	    }
    }
}

客户端发送请求:http://www.read*******l.cn:8688/one/hello

客户端最终请求:http://127.0.0.1:8080/three/world

测试7:proxy_redirect  off;

http {
    server {
        listen 8688;
	    server_name www.read*******l.cn;
	    location /one/ {
	        proxy_pass  http://127.0.0.1:8080/two/;
	        proxy_redirect  off;
	    }
    }

    server {
        listen 8080;
	    server_name www.read*******l.cn;
	    location /two/ {
	        return  301  http://127.0.0.1:8080/two/world;            # 与测试5的区别之处
	    }
    }
}

客户端发送请求:http://www.read*******l.cn:8688/one/hello

客户端最终请求:http://127.0.0.1:8080/two/world

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

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

相关文章

汇编 8259 中断实验

汇编 8259 中断实验 一、实验目的 (1)掌握微机中断处理系统的基本原理。 (2)掌握8259中断控制器的工作原理,学会编写中断服务程序。 (3)掌握8259级联方式的使用方法。 二、实验设备 &#x…

企业级实践为“燃料”,大模型助推Kyligence产品力向上

回顾2023年,最火热的科技话题无疑是生成式AI。 从ChatGPT横空出世,到“千模大战”如火如荼,AIGC正式破圈,成为企业数字化转型的新关键词。 在红杉中国《2023企业数字化年度指南》中,通过调研235家企业可知&#xff0…

Eclipse先关的一些配置

启动配置设置 配置项详细说明: -Xms:初始堆内存大小,设定程序启动时占用内存大小,默认物理内存1/64 -Xms -XX:InitialHeapSiz-Xmx:最大堆内存,设定程序运行期间最大可占用的内存大小。如果程序运行需要…

软件测试|SQL中的null值,该如何理解?

深入理解SQL中的Null值:处理缺失数据的重要概念 简介 Null值在SQL中是用于表示缺失或未知数据的特殊值。本文将深入探讨Null值的概念、处理方法和注意事项,以帮助读者更好地理解和处理SQL中的缺失数据。 在SQL数据库中,Null值是一种特殊的…

BEV+Transformer感知架构共识下,传感器「火药味」再升级

高阶智能驾驶战火愈演愈烈,正带动感知方案卷入新一轮军备竞赛。 根据高工智能汽车研究院最新发布数据显示,2023年1-9月,中国市场(不含进出口)乘用车前装标配(软硬件)NOA交付新车37.73万辆&…

Linux下NUMA 内存管理初步理解

LINUX 系统在多核下,以及NUMA架构技术下 如何管理物理内存? 经过初步了解 发现系统对内存有以下工作 1 映射 2 内存碎片 3 内存回收 4 内存池 5 冷热页 6 水位线和保留内存 7 支持内存条热插拔 8 大页管理 这些功能给人感觉,尤其是DBA感觉是重新实现了数据缓存池的功…

机器学习(三) -- 特征工程(1)

系列文章目录 机器学习(一) -- 概述 机器学习(二) -- 数据预处理(1-3) 机器学习(三) -- 特征工程(1-2) 未完待续…… 目录 系列文章目录 前言 一、特征…

大数据开发的专业术语

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列专栏目录 [Java项…

画中画视频剪辑:创意与技术的完美结合,批量制作视频不再难

随着科技的飞速发展,视频制作已成为信息时代的一种重要表达方式。其中画中画视频剪辑技术更是以其独特的创意性和技术性,为观众的视觉体验带来了全新的冲击。它不仅为创作者提供了更广阔的创意空间,同时也降低了视频制作的门槛。现在一起来看…

VSCode Jupyter print 函数输出在错误的单元格(cell)

问题描述 最近在复现一个开源项目时,发现执行过该项目中的代码单元格后,其余单元格的print函数输出也会续在该单元格后。而正常情况下print函数输出应该位于其所属的单元格。下图中,我将出现问题的单元格执行后清空了输出,但是在…

深度解析 Compose 的 Modifier 原理 -- Modifier.composed()、ComposedModifier

众所周知:原理性分析的文章,真的很难讲的通俗易懂,讲的简单了就没必要写了,讲的繁琐难懂往往大家也不乐意看,所以只能尽量找个好的角度(比如从 Demo 代码示例出发)慢慢带着大家去钻源码&#xf…

书生·浦语大模型全链路开源开放体系

书生浦语大模型全链路开源体系_哔哩哔哩_bilibili 大模型全链路开源开放体系等你来探索~ https://github.com/internLM/tutorial 书生浦语全链条开源开放体系 1)数据: 书生万卷 2TB数据,并行训练,极致优化涵盖多种模态与任务 预训练: I…

聚道云软件连接器助力某动漫行业公司实现财务自动化

客户介绍 某动漫行业公司是一家专注于文化创意领域,致力于为人们提供独特、有趣的文化产品。公司拥有一支充满活力和创造力的团队,他们以卓越的创意和精湛的技术,创造出了一系列令人惊叹的作品。未来,该公司将继续秉承这一理念&a…

低代码开发平台支持复杂的业务逻辑和API对接吗

当今数字化时代,企业和组织面临着日益复杂的业务需求。为了应对这些挑战,低代码开发平台应运而生。白码低代码开发平台是一种高效、灵活且可扩展的开发工具,能够支持复杂的业务逻辑和第三方API对接,为企业带来更快速、更灵活的解决…

Rust 字符串 初步了解

rust 的字符串 。字符串不是复合类型, String 和 &str : String 具有所有权,是存储在堆上的。&str 没有所有权,是对 String 的引用。字符串字面量也是 &str 类型,存储在栈上。 切片(slice&a…

线性代数 --- 为什么LU分解中L矩阵的行列式一定等于(+-)1?

以下是关于下三角矩阵L的行列式一定等于-1的一些说明 证明:在LU分解中,下三角矩阵L的行列式一定是. 在证明之前,我这里先补充几条关于行列式的性质: 性质1:对于三角矩阵而言,不论是上三角矩阵还是下三角矩…

Qt6学习笔记:对象树

使用QObject及其子类创建的对象是以对象树的形式来组织的。创建一个QObject对象时若设置一个父对象,它就会被添加到父对象的子对象列表里,一个父对象被删除时,其全部的子对象都会自动删除。QObject类的构造函数里有一个参数用于设置对象的父对…

PyTorch基础操作

一、Tensor 在 PyTorch 中,张量(Tensor)是一个核心概念,它是一个用于存储和操作数据的多维数组,类似于 NumPy 的 ndarray,但与此同时,它也支持 GPU 加速,这使得在大规模数据上进行科…

数据结构和算法-希尔排序(增量序列 算法实现 性能分析 稳定性)

文章目录 希尔排序过程小结增量序列不是固定的 算法实现算法性能分析稳定性小结 希尔排序 基本有序,就是存在有序的子序列 通过增量4得到各个子表 对各个子表分别进行插入排序 缩小增量,再除2,此时的子表 对各个子表插入排序 缩小增量&…

数据库设计——DQL

D Q L \huge{DQL} DQL ⭐⭐⭐⭐⭐ DQL:数据库查询语言,用来查询数据库中的记录,非常的重要,对于数据库的操作修改相对来讲还是较少部分,绝大多数操作都是数据查询。 整体的语法结构: 基本查询 示例&#…