Nginx代理转发请求POST变GET请求问题

  • 🚀 注重版权,转载请注明原作者和原文链接

  • 🥭 作者:Yuan-Programmer

  • 🍎 个人博客:https://boke.open-yuan.com

  • 🍉 已经替换了新的域名,总站叫做:OpenYuan开袁网,后续将慢慢开源一些项目上去,目前是只有一个博客平台

只想看解决结果的,可以直接拉到最底下看代码

问题

起因是这样的,之前重新买了一个新的服务器,这几天有空闲便将我之前的博客项目平台重新部署上去。

先贴个修改前的Nginx配置文件

强制http转发到https,重定向,先部署的前端,访问一切正常

但是做接口请求代理转发的时候,出现问题了

前端项目请求一直请求失败

排查

先直接通过IP+后端项目端口请求接口,正常可以请求到没问题,那么就是nginx配置的问题

起初我以为是配置哪里没有写对,反复看了好几遍配置,修修改改,都没什么问题

最后去Apifox测试下,看看是不是也是一样,就在这时候发现了一样东西

是不是很奇怪,明明我发起的是POST请求,结果转发成了GET请求,于是顺藤摸瓜,排查到了原来是由http强制重定向成https时候出现的问题

重定向,nginx会重新发起一道新的请求到重定向的地址,而nginx默认使用GET请求方式转发所有的请求,所以才会把POST变成GET(这里夸赞一波文心一言,还不错,比讯飞好用多了)

解决

到这里,问题一切都明了了,调整一下重定向的配置

return 307:用于临时重定向,保留原来的请求方式
rewrite:常用的地址跳转方式,兼容正则表达式,推荐使用这种方式

rewrite ^(.*)$ https://$host$1;

哎,太久没部署过项目了,这么简单的问题居然都忘了,这次长长记性

相关推荐
律宏阔4 小时前
WSL Docker 端口明明空闲,但就是绑不上端口
linux·windows
律宏阔4 小时前
WSL 突然断网,无法 ping 内网或外网
linux·windows
穷人小水滴4 小时前
用容器编译 VirtualBox 虚拟机软件 (ArchLinux, podman)
linux·容器·virtualbox
乱码三千5 小时前
如何优雅地直连无公网 IP 的远程 GPU 服务器
linux·人工智能·程序员
yunwei375 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei375 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei375 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
GeW5 小时前
制造业高端化,为什么必须重估Linux和数据库?
linux
GeW5 小时前
工业场景中的Linux与数据库选型:高端化转型的技术底座
linux
春天花会开1315 小时前
内网 HTTPS 部署实战:私有 CA + Nginx 反向代理全流程复盘
运维·nginx·https