关于Nginx的 location 配置各种情况转换后的样子记录

news2024/11/29 4:44:50
Nginx location 配置要代理的地址测试URL代理后的URL举例编号
/test01http://127.0.0.1:8080/test01/abc/test/test01/abc/test01
/test02http://127.0.0.1:8080//test02/abc/test//abc/test02
/test03/http://127.0.0.1:8080/test03/abc/test/test03/abc/test03
/test04/http://127.0.0.1:8080//test04/abc/test/abc/test04
/test05http://127.0.0.1:8080/app1/test05/abc/test/app1/abc/test05
/test06http://127.0.0.1:8080/app1//test06/abc/test/app1//abc/test06
/test07/http://127.0.0.1:8080/app1/test07/abc/test/app1abc/test07
/test08/http://127.0.0.1:8080/app1//test08/abc/test/app1/abc/test08
/http://127.0.0.1:8080/test09/abc/test/test09/abc/test09
/http://127.0.0.1:8080//test10/abc/test/test10/abc/test10
/http://127.0.0.1:8080/app1/test11/abc/test/app1test11/abc/test11
/http://127.0.0.1:8080/app2//test12/abc/test/app2/test12/abc/test12

举例测试前的准备

不知道内网穿透的可参考我的博客: https://blog.csdn.net/qq_33333654/article/details/130106800?spm=1001.2014.3001.5502

思路

1、本地准备http接口
2、nginx代理到本地接口
3、使用natapp指向本地nginx代理的端口

配置natapp 并启动

在这里插入图片描述
启动内网穿透后会有个外网地址:
在这里插入图片描述
我没有开会员,注意这个地址是会变动的

配置nginx

# Nginx Test
    server {
    listen       8082;
    server_name  localhost;
            
    location /test01 {
            proxy_pass http://127.0.0.1:8080;
    }

    location /test02 {
            proxy_pass http://127.0.0.1:8080/;
    }

    location /test03/ {
            proxy_pass http://127.0.0.1:8080;
    }

    location /test04/ {
            proxy_pass http://127.0.0.1:8080/;
    }

    location /test05 {
            proxy_pass http://127.0.0.1:8080/app1;
    }

    location /test06 {
            proxy_pass http://127.0.0.1:8080/app1/;
    }

    location /test07/ {
            proxy_pass http://127.0.0.1:8080/app1;
    }

    location /test08/ {
            proxy_pass http://127.0.0.1:8080/app1/;
    }

    # 09
    location / {
            proxy_pass http://127.0.0.1:8080;
    }

    # 10
    #location / {
    #        proxy_pass http://127.0.0.1:8080/;
    #}

    # 11
    #location / {
    #        proxy_pass http://127.0.0.1:8080/app1;
    #}

    # 12
    #location / {
    #        proxy_pass http://127.0.0.1:8080/app2/;
    #}
    
    }

10到12先注释掉,跟09冲突了,后面测试再放开

准备测试所需的工程代码 JAVA


import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {


    @GetMapping("/test01/abc/test")
    public String test01abctest(){
        System.out.println("Test num is 01 ; this is /test01/abc/test");
        return "01";
    }

    @GetMapping("/abc/test")
    public String test02or04abctest(){
        System.out.println("Test num is 02 or 04 ; this is /abc/test");
        return "02 or 04";
    }

    @GetMapping("/test03/abc/test")
    public String test03abctest(){
        System.out.println("Test num is 03 ; this is /test03/abc/test");
        return "03";
    }

    @GetMapping("/app1/abc/test")
    public String test05or06or08abctest(){
        System.out.println("Test num is 05 or 06 or 08; this is /app1/abc/test");
        return "05 or 06 or 08";
    }

    @GetMapping("/app1abc/test")
    public String test07abctest(){
        System.out.println("Test num is 07; this is /app1abc/test");
        return "07";
    }


    @GetMapping("/test09/abc/test")
    public String test09abctest(){
        System.out.println("Test num is 09 ; this is /test09/abc/test");
        return "09";
    }

    @GetMapping("/test10/abc/test")
    public String test10abctest(){
        System.out.println("Test num is 10 ; this is /test10/abc/test");
        return "10";
    }


    @GetMapping("/app1test11/abc/test")
    public String test11abctest(){
        System.out.println("Test num is 11 ; this is /app1test11/abc/test");
        return "11";
    }

    @GetMapping("/app2/test12/abc/test")
    public String test12abctest(){
        System.out.println("Test num is 12 ; this is /app2/test12/abc/test");
        return "12";
    }

}

随便使用任意的http测试工具例如postman

我用的是apifox
在这里插入图片描述

01 测试

测试工具请求地址:

http://a9542k.natappfree.cc/test01/abc/test

在这里插入图片描述
响应结果:

在这里插入图片描述

工程代码控制台输出:
在这里插入图片描述

02 测试

访问地址:

http://a9542k.natappfree.cc/test02/abc/test

响应结果:
在这里插入图片描述
控制台日志:
在这里插入图片描述
说明我们配置是正确的,因为转换的实际路径是:
http://127.0.0.1:8080//abc/test
因为我们工程里压根没有“//abc/test”的接口,所以才会报错。
换句话说,报错就对了。

解决方案,修改nginx配置

03 测试

访问地址:

http://a9542k.natappfree.cc/test03/abc/test

我换了一下postman试试
响应结果:
在这里插入图片描述
控制台输出:
在这里插入图片描述

04 测试

访问地址:

http://a9542k.natappfree.cc/test04/abc/test

响应结果:
在这里插入图片描述
控制台输出:
在这里插入图片描述
后面的就不逐个测试了,感兴趣的可以自行测试一下

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

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

相关文章

MYSQL练习一

练习一 创建stroe数据库,在数据库中根据开发喵store业务 创建表,表结构如下,并插入以下数据,完成下面的 sql 表数据: - 查询商品库存等于50的所有商品,显示商品编号,商 品名称,商品…

Vue第四篇:html和js基础知识查漏补缺

1、a标签 定义超链接,用于从一个页面链接到另一个页面 target属性:打开目标URL的方式,_top为再当前窗口打开,_blank为新窗口打开 2、span标签 对文档中的行内元素进行组合,它提供了一种将文本的一部分或者文档的一部分…

GB2312编码

说明 GB2312代码表用两个字节表示一个图形字符,两个字节中前面的字节为第一字节,后面的字节为第二字节。 区位码: GB2312代码表分成94个区,范围为1-94,区的编号由第一字节表示;每个区有94位,范…

@PostConstruct和@PreDestroy与servlet生命周期的关系

执行顺序结果 /*** 服务器加载Servlet* ---> 创建servlet实例,实现servlet构造函数* ---> 执行注解PostConstruct* ---> servlet.Init()* ---> servlet/service() 方法* ---> 执行注解PreDestroy* ---> servlet.destroy()* ---> 服务器卸载Se…

React Dva项目中路由跳转的方法

接下来 我们来看看路由跳转 先打开 我们Dva项目 然后我们需要在routes 下创建一个自己的路由,如果您尚未掌握在Dva项目中创建路由,可以参考我的文章 React 在Dva项目中修改路由配置,并创建一个自己的路由 然后 我的项目有两个路由 router.js…

2. Spring 的创建和使用

目录 1. 创建 Spring 项目 1.1 创建一个 maven 项目 1.2 添加 Spring 框架支持 1.3 添加启动类 2. 存储 Bean 对象 2.1 创建 Bean 2.2 将 Bean 注册到容器 3. 获取并使用 Bean 对象 3.1 创建 Spring 上下文 ApplicationContext 和 BeanFactory 的区别(重点…

《零基础入门学习Python》第054讲:论一只爬虫的自我修养2:实战

0. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式! 今天我们决定在实战中来进行学习,会举两个例子,第一个例子是我们会下载一只猫,第二个例子是我们用Python来模拟浏览器通过在线的…

MySQL数据库中 IF函数的使用

文章目录 使用IF函数进行简单条件判断IF函数的应用场景总结 IF函数作为MySQL数据库中的一个函数,可以在查询语句中进行条件判断并返回不同的结果。它有多种语法形式,包括简单的IF语句和复杂的CASE语句。在本篇文章中,我们将介绍IF函数的基本用…

Android 实现仿淘宝地址多级选择器

先看下效果图 仿淘宝的选择完城市出来的选择省市区之类的,这个支持自定义层级,多少层都可以使用,接下来是代码: BottomPopUtils.class,我写了一个工具类,方便全局调用 public class BottomPopUtils {public static P…

JAVA-正则表达式基本语法规则和Pattern,Matcher,PatternSyntaxException三大类

目录 引言 一,正则表达式基本语法规则 二,正则表达式的三大类方法 2.1,Pattern类 2.1.1,Pattern的常用方法matches() 2.2,Matcher类 2.2.1,Matcher的常用方法find() 2.2.2&a…

vue3-Vite原理

1. vite的优势 1. 极速的服务启动2. 轻量快速的预加载.....2. 对vite的理解(和webpack对比说明) webpack要经过打包,然后在开发阶段启动服务器vite不需要打包 下图的"准备"就是编译的意思。 css的内容会编译程一个字符串。 组件会…

[SSM]手写Spring框架

目录 十一、手写Spring框架 第一步:创建模块myspring 第二步:准备好要管理的Bean 第三步:准备myspring.xml配置文件 第四步:核心接口实现 第五步:实例化Bean 第六步:给Bean属性赋值 第七步&#xff…

arcgis-利用等高线数据生成dem栅格

1、打开cass,展高程点,绘制三角网,绘制等高线,删除三角网和高程点。如下: 2、得到的等高线图,如下: 3、保存文件为dwg格式,随后打开arcmap软件,打开dwg的线层数据&#x…

【项目设计】基于负载均衡的在线oj平台

目录 一、项目介绍 二、开发环境以及技术 三、概要设计 四、关键算法 五、项目演示 六、代码实现 一、项目介绍 该项目是基于负载均衡的在线oj,模拟平时刷题网站(leetcode和牛客)写的一个在线判题系统 项目主要分为五个模块&#xff…

DevOps系列文章之 Git知识大全

refs和reflog Git的所有操作都基于提交:你会暂存提交,创建提交,查看过去的提交记录,或者使用很多很多Git命令在不同的仓库之间转移提交内容。这些命令中的很大一部分都会以某种形式来操作提交,其中很多还会以提交ID作…

结构型设计模式之代理模式【设计模式系列】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everythi…

【iOS】对象底层学习

学习博客:[iOS]-OC对象底层探索 1. 类与对象 1.1 类和对象的本质 1.1.1 对象 对象的本质是结构体。 interface TestPerson : NSObject {// 成员变量// publicNSString *_age; // 4个字节 } property (nonatomic, copy) NSString *name; // 属性endimplementati…

C程序环境及预处理

​​​​​文章目录 一、程序的翻译环境和执行环境 1.程序编译过程 2.编译内部原理 3.执行环境 二、程序运行前的预处理 1.预定义符号归纳 2.define定义标识符 3.define定义宏 4.define替换规则 5.宏和函数的对比 三、头文件被包含的方式 四、练习:写一…

F.interpolate 数组采样操作

功能:利用插值方法,对输入的张量数组进行上\下采样操作,换句话说就是科学合理地改变数组的尺寸大小,尽量保持数据完整。 在计算机视觉中,interpolate函数常用于图像的放大(即上采样操作)。比如在细粒度识别领域中&…

【C#】MVC页面常见的重定向方式和场景

本篇文章主要简单讲讲,C# MVC 页面常见跳转或者重定向的方式和场景。 在实际项目开发中,在一些特定场景肯定会用到重定向,比如:不同角色跳转到不同视图地址 目录 一、种常见重定向方式1.1、RedirectToAction1.2、RedirectToRoute1…