首页 > 解决方案 > 如何在重定向的服务器上发出 POST 请求?

问题描述

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

例如。我想发送一个 POST 请求,当我去检查它的 access_log 时www.example.com显示 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

负载均衡器.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。

标签: phpnginxserverload-balancingnginx-reverse-proxy

解决方案


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


推荐阅读