nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > 解决Nginx请求转发将POST变为GET

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

作者:No Big Deal

这篇文章主要介绍了如何解决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;
    }

最后转发成功!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文