当前位置: 首页 > news >正文

nginx 路径匹配,关于“/“对规则的影响

1、基本规则

假如后端实际地址为:

http://127.0.0.1:8080/api/user/getById?id=123

则:

1)通过nginx转发,使用http://127.0.0.1/api/user/getById?id=123访问

server {listen       80;server_name  127.0.0.1;location /api/ {proxy_pass http://127.0.0.1:8080;}}

通过原有地址直接准发非常简单。

2)通过nginx转发,使用http://127.0.0.1/test/api/user/getById?id=123访问

server {listen       80;server_name  127.0.0.1;location /test/ {proxy_pass http://127.0.0.1:8080/;}}

这里相当于对请求添加了前缀,但在转发的过程中是没有前缀的,故需要去掉。关键点就是地址后面的 "/"

2.关于斜杆"/"的案例对比

以服务地址http://127.0.0.1:8080/api/user/getById进行说明,访问地址是http://127.0.0.1/api/user/getById。location后斜杆与proxy_pass后斜杆问题如下:

1)location、proxy_pass都不加斜杠

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

实际代理地址:http://127.0.0.1:8080/api/user/getById。正确的

2)location加斜杠,proxy_pass不加斜杠

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

实际代理地址:http://127.0.0.1:8080/api/user/getById。正确的

3)location不加斜杠,proxy_pass加斜杠

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

实际代理地址:http://127.0.0.1:8080//user/getById。错误的,也出现了双斜杠

4)location、proxy_pass都加斜杠

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

实际代理地址:http://127.0.0.1:8080/user/getById

5)location不加斜杠,proxy_pass加"api"

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

实际代理地址:http://127.0.0.1:8080/api/user/getById。正确的

6)location加斜杠,proxy_pass加"api"

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

实际代理地址:http://127.0.0.1:8080/apiuser/getById。错误的,少了一个斜杆

7)location不加斜杠,proxy_pass加"api/"

location /api {proxy_pass http://127.0.0.1:8080/api/;

实际代理地址:http://127.0.0.1:8080/api//user/getById。这种情况会出现双斜杠问题,后端在认证请求时会校验失败。

8)location加斜杠,proxy_pass加"api/"

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

实际代理地址:http://127.0.0.1:8080/api/user/getById。正确的

可以看出,两者加不加斜杆的区别还是很大的,不同的场景使用不同的配置即可。简单的,要么都不加,这样转发的地址是对应的。

http://www.lryc.cn/news/470721.html

相关文章:

  • 安全知识见闻-网络安全热门证书
  • Pandabuy事件警示:反向海淘品牌如何规避风险
  • 【纯血鸿蒙】安装hdc工具
  • TensorFlow面试整理-给定一个任务(如图像分类、文本分类),如何从头构建一个TensorFlow模型?
  • unity中出现一些莫名其妙的问题
  • Python爬虫-汽车投诉排行榜单数据
  • [C++][数据结构][哈希表]详细讲解
  • Android Gradle
  • Vue2自定义指令及插槽
  • 【Qt】系统相关——多线程、Qt多线程介绍、常用函数、线程安全、网络、UDP Socket、TCP Socket
  • 1GS/s 4通道14bit PCIE采集卡
  • 动态IP是什么?
  • 51单片机完全学习——红外遥控
  • 群控系统服务端开发模式-应用开发-业务架构逻辑开发BaseAPI
  • 【AI日记】24.10.27 了解AI的未来
  • 【时间之外】IT人求职和创业应知【19】
  • MOE混合专家模型总结(面试)
  • 第8次CCF CSP认证真题解
  • 2024昆明ICPC A. Two-star Contest(直观命名+详细注释)
  • 【算法刷题指南】双指针
  • HTML,CSS,JavaScript三件套
  • react 总结+复习+应用加深
  • 关于 API
  • 第15次CCF CSP真题解
  • STM32硬件平台
  • 一文讲明白大模型分布式逻辑(从GPU通信原语到Megatron、Deepspeed)
  • 【人工智能-初级】第6章 决策树和随机森林:浅显易懂的介绍及Python实践
  • 时间序列预测(九)——门控循环单元网络(GRU)
  • 李东生牵手通力股份IPO注册卡关,三年近10亿“清仓式分红”引关注
  • Android13、14特殊权限-应用安装权限适配