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