Nginx 設置反向代理 post 變成 get 提示 400


1.網站 www.xxx.com 放在 Nginx 里跑在 80 端口上;

2.當前服務器 5000 端口上跑着服務,打算在訪問 www.aaa.com/apis 的時候 讓 Nginx 轉發到 127.0.0.1:5000 上進行數據交換;

3.本機有防火牆所以 5000 端口只能用 127.0.0.1:5000 用 Nginx 進行轉發。具體配置如下:

location /apis/{ rewrite ^/apis/(.*)$ /$1 break; proxy_set_header Host: www.xxx.com; proxy_method POST; proxy_pass http://127.0.0.1:5000/; }

4.在頁面中執行 ajax 請求在開發人員工具 network 中觀察到走了兩條請求: /apis/get_sowing_area/ /apis/get_sowing_area 一個帶 /一個不帶,我仔細看了下確定不是 js 的問題。 不帶 /的返回 301 MOVED PERMANENTLY 提交方式是 post 帶 /的返回 400 BAD REQUEST 不知道為啥成了 get 難道說反向代理僅支持 get 請求? 我本來是 post 提交的等到 Nginx 反向代理的時候就成了 get?

 

301 rewrite 會改變請求 method,把 POST 變成 GET
可以改變寫法,例如使用 return 加 307 狀態碼,307 不會改變 POST
詳細的可以參考 RFC 文檔定義: https://tools.ietf.org/html/rfc7538#page-2

或者把rewrite去掉

轉載自:https://www.v2ex.com/t/486173


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM