Второй раз натыкаюсь.
В первый раз я не мог понять почему на php скрипт приходил GET запрос, хотя я отправлял POST и при этом массив был пустой, но при просмотре php://input
нужные мне переменные были видны.
Тут ситуация была простой, но не очевидной, при запросе, я не попадал в нужный location и nginx успешно отправлял меня на @404, в следствие чего, php получал уже GET запрос.
Сейчас, эта фича, помогает работать с ssi включениями, т.к. при сборе "блоков" страницы у нас есть возможность получить оригинальный URL и добраться до нужных нам GET параметров.
Из доков nginx:
$request_uri
- эта переменная равна полному первоначальному URI вместе с аргументами;
Пример, вывод $_SERVER из подключенного ssi блока:
- [QUERY_STRING] => do=search&action=search
- [REQUEST_URI] => /?q=творог&lr=213
Что бы получить нужный нам фэйковый $_GET, можно сделать что-нибудь типо этого:
parse_str( str_replace('/?', '', getenv('REQUEST_URI') ), $original_get );