Как получить POST-запрос на перенаправленных серверах? - PullRequest
0 голосов
/ 04 января 2019

Я настраиваю балансировщик нагрузки 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

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 голосов
/ 05 января 2019

Измените proxy_pass и proxy_redirect на https:// URL.В противном случае вы потеряете информацию POST во время дополнительного перенаправления.Перенаправление прокси будет использовать расположение http перед указанным вами адресом https, а это означает, что он всегда будет сначала пробовать http.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...