Nginx中proxy_pass的斜杆问题引起的403案件 | 创作者训练营第二期

前言

  • 在线音乐戳我呀!
  • 音乐博客源码上线啦!
  • 写页面,离不开接口。
  • 今天兴致勃勃写了个酷炫的曲线图,正准备对接接口,接口回了我个403权限不足
  • 接下来全面介绍一下事情的起因。

目前存在的问题?

调用接口的时候报了我个“403权限不足”

下面我们分析为什么会存在该问题。

为什么会出现此问题?

系统内调用一个接口,一开始返回404,发现ipA写错了,换做ipB的时候,要求在请求头传个token字段过去才可调通,调用的时候发现返回”权限不足“,疯狂call后端大佬。

掘金1.png

对此进行分析:

目前有一个好消息:那就是不会返回404。证明接口是对的

坏消息是:转返回403,分析一波,是不是nginx转发错了

location /wcs/stu/ {
	proxy_pass http://47.44.20.200/;
}
复制代码

去掉/试试?

即:proxy_pass http://47.44.20.200

Success!

解决方案

去掉/,即可。

代码如下

location /wcs/stu/ {
	proxy_pass http://47.44.20.200;
}
复制代码

恶补知识

Nginxproxy_pass分两种

  • 不带URI方式 :只包含ip和端口号(端口之后的/也没有)
    • eg:proxy_pass http://localhost:8080
  • 带URI方式 : 端口号之后有其他路径的
    • eg: proxy_pass http://localhost:8080/abc

栗子如下:

不带URI方式 : nginx将会保留location中路径部分

location /api1/ {
	proxy_pass http://localhost:8080;
}

在访问http://localhost/api1/xxx时,会代理到http://localhost:8080/api1/xxx
复制代码

对于带URI方式,nginx将使用诸如alias的替换方式对URL进行替换,并且这种替换只是字面上的替换

location /api2/ {
	proxy_pass http://localhost:8080/;
}

当访问http://localhost/api2/xxx时,http://localhost/api2/
(注意最后的/)被替换成了。


http://localhost:8080/,然后再加上剩下的xxx,于是变成了http://localhost:8080/xxx
复制代码

知识点

Nginx

参考文献

Nginx中proxy_pass的斜杠问题

以往推荐

Vue-Cli3搭建组件库

Vue实现动态路由(和面试官吹项目亮点)

项目中你不知道的Axios骚操作(手写核心原理、兼容性)

VuePress搭建项目组件文档

koa2+vue+nginx部署

vue-typescript-admin-template后台管理系统

原文链接

juejin.cn/post/695418…

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享