如何在重定向的服务器上发出POST请求?

时间:2019-01-04 04:10:50

标签: php nginx server load-balancing nginx-reverse-proxy

我正在脚本上设置Nginx负载均衡器。
www.loadbalancer.com/request.php =>
www.example01.com/request.php
www.example02.com/request.php
www.example03.com/request.php

例如。我想发送POST请求,当我去检查www.example.com的access_log时,它显示POST,但是当我进入www.example01.com时,它显示GET,所以它不显示。不要使用我的x-www-form-urlencoded。

我正在使用nginx / 1.10.3。

www.loadbalancer.com [date] "POST /request.php HTTP/1.1" 301 185 "-" PostmanRuntime/7.4.0
www.example01.com [date] "GET /request.php HTTP/1.1" 200 45 "https://www.loadbalancer.com/request.php" PostmanRuntime/7.4.0

loadbalancer.conf

location = /request.php {<br>
  proxy_pass http://backup_servers$request_uri;<br>
  proxy_redirect http://backup_servers$request_uri https://backup_servers$request_uri;
  proxy_set_header Host $host;<br>
  proxy_set_header X-Real-IP $remote_addr;<br>
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>

  proxy_method POST;<br>

  proxy_set_header content-type "application/x-www-form-urlencoded";<br>
}

我希望该方法成为POST。

1 个答案:

答案 0 :(得分:0)

将您的 proxy_pass proxy_redirect 更改为 https:// 网址。否则,在额外的重定向过程中,您将丢失POST信息。代理重定向将在您指定的https之前使用http位置,这意味着它将始终首先尝试使用http。