如何解决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;
}
最后转发成功!

总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringBoot前端后端分离之Nginx服务器下载安装过程
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,这篇文章主要介绍了SpringBoot前端后端分离之Nginx服务器,需要的朋友可以参考下2022-08-08
Nginx中404页面的配置及AJAX请求返回404页面的方法
404是请求页面不存在的错误代码,在Nginx中有时处理jQuery中的ajax方法虽然能返回404页面但错误代码却返回200,针对此问题我们具体来看一下Nginx中404页面的配置及AJAX请求返回404页面的方法2016-05-05
Keepalived+Nginx+Tomcat 实现高可用Web集群的示例代码
这篇文章主要介绍了Keepalived+Nginx+Tomcat 实现高可用Web集群的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-09-09
Nginx PHP-Fcgi中因PHP执行时间导致504 Gateway Timeout错误解决记录
这篇文章主要介绍了Nginx PHP-Fcgi中因PHP执行时间导致504 Gateway Timeout错误解决记录,本文的解决方法得来不易,需要的朋友可以参考下2014-09-09
详解Nginx服务器的nginx-http-footer-filter模块配置
这篇文章主要介绍了Nginx服务器的nginx-http-footer-filter模块配置,nginx-http-footer-filter用作在请求的页面底部插入代码,需要的朋友可以参考下2016-01-01


最新评论