如何解決Nginx請求轉(zhuǎn)發(fā)將POST變?yōu)镚ET問題
先說問題
我配置了Nginx代理,目的是將請求轉(zhuǎn)發(fā)到指定的后端,對于普通的JSON數(shù)據(jù),沒有什么問題。
但是有文件上傳的就不一樣了,我需要指定到第3方的地址。
然而常規(guī)的配置完成后,Nginx實際的轉(zhuǎn)發(fā)動作改變了我的請求方式
location /abd/def/uploadFile/ {
proxy_pass http://x.com:y/abc/def/uploadFiles;
}
導致第3方服務器報錯如圖

解決方法
Nginx 配置 307
其作用如下:
1.return 307 是 Nginx 配置中的一個指令,用于返回一個指定的 HTTP 狀態(tài)碼,并重定向到客戶端發(fā)出的相同請求地址。當使用 return 307 > 時,Nginx 將會保留客戶端發(fā)出的原始請求方法和請求體,并以 307 Temporary Redirect 的狀態(tài)碼將請求重定向回客戶端。
2.307 狀態(tài)碼表示臨時重定向,客戶端應該繼續(xù)使用原始的請求方式和請求體重新發(fā)送請求。與 302 Found 和 303 See Other 不同的是,307 狀態(tài)碼要求客戶端不要更改請求方式(例如,POST 轉(zhuǎn)為 GET),并且要保持請求的完整性。
3.在某些情況下,您可能希望通過 return 307 來實現(xiàn)臨時重定向,同時保留原始請求方式和請求體。這可以用于讓客戶端重新發(fā)送相同請求,而不會丟失任何數(shù)據(jù)或更改請求方式。
配置如下
location /abd/def/uploadFile/ {
return 307 http://x.com:y/abc/def/uploadFiles;
}
最后轉(zhuǎn)發(fā)成功!

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx 代理轉(zhuǎn)發(fā)阿里云OSS上傳的實現(xiàn)代碼
這篇文章主要介紹了Nginx 代理轉(zhuǎn)發(fā)阿里云OSS上傳的實現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-09-09
502?Bad?Gateway產(chǎn)生的原因及8個詳細的解決方法總結(jié)
Nginx?502?Bad?Gateway的錯誤已經(jīng)遇到好幾次了,這里做一下記錄,備忘,下面這篇文章主要給大家介紹了關(guān)于502?Bad?Gateway產(chǎn)生的原因及8個詳細的解決方法,文中的介紹非常詳細,需要的朋友可以參考下2023-05-05
修改nginx站點根目錄總結(jié)經(jīng)驗(小結(jié))
這篇文章主要介紹了修改nginx站點根目錄總結(jié)經(jīng)驗(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06
Linux中Nginx反向代理如何實現(xiàn)不同路徑訪問不同的頁面
這篇文章主要介紹了Linux中Nginx反向代理如何實現(xiàn)不同路徑訪問不同的頁面方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12

