IT俱乐部 Nginx 如何解决Nginx请求转发将POST变为GET问题

如何解决Nginx请求转发将POST变为GET问题

先说问题

我配置了Nginx代理,目的是将请求转发到指定的后端,对于普通的JSON数据,没有什么问题。

但是有文件上传的就不一样了,我需要指定到第3方的地址。

然而常规的配置完成后,Nginx实际的转发动作改变了我的请求方式

  location  /abd/def/uploadFile/ {
        proxy_pass http://x.com:y/abc/def/uploadFiles;
    }

导致第3方服务器报错如图

解决方法

Nginx 配置 307

其作用如下:

1.return 307 是 Nginx 配置中的一个指令,用于返回一个指定的 HTTP 状态码,并重定向到客户端发出的相同请求地址。当使用 return 307 > 时,Nginx 将会保留客户端发出的原始请求方法和请求体,并以 307 Temporary Redirect 的状态码将请求重定向回客户端。

2.307 状态码表示临时重定向,客户端应该继续使用原始的请求方式和请求体重新发送请求。与 302 Found 和 303 See Other 不同的是,307 状态码要求客户端不要更改请求方式(例如,POST 转为 GET),并且要保持请求的完整性。

3.在某些情况下,您可能希望通过 return 307 来实现临时重定向,同时保留原始请求方式和请求体。这可以用于让客户端重新发送相同请求,而不会丢失任何数据或更改请求方式。

配置如下

  location  /abd/def/uploadFile/ {
     return 307 http://x.com:y/abc/def/uploadFiles;
    }

最后转发成功!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持IT俱乐部。

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/server/nginx/12717.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部