Дублирование параметров в переменной $_SERVER['QUERY_STRING'] возникает из-за специфики работы с URL. По умолчанию, когда в URL есть одинаковые параметры, они могут быть дублированы. Например, если в URL присутствуют параметры "?foo=bar&foo=baz", то они будут представлены в $_SERVER['QUERY_STRING'] как "foo=bar&foo=baz".
Это нежелательно, так как может вызывать путаницу и проблемы при работе с этими параметрами. Интерпретатор PHP не предоставляет прямых средств для работы с такой структурой, поэтому нужна специальная обработка, чтобы получить корректные значения.
Эта проблема не связана с конфигурацией Nginx или другого веб-сервера. Это связано с тем, как URL обрабатываются на уровне браузера и сервера. Если вам необходимо работать с этими параметрами, вы можете использовать различные методы обработки URL-запросов в своем коде, чтобы получить нужные значения.
Одним из способов справиться с этой проблемой является использование функций PHP для анализа строки запроса, таких как parse_str() или parse_url(). Они позволяют разобрать строку запроса на отдельные параметры и значения, и работать с ними отдельно.
Например, следующий код позволяет разобрать $_SERVER['QUERY_STRING'] и получить массив параметров и значений:
```
parse_str($_SERVER['QUERY_STRING'], $params);
```
Теперь вы можете обращаться к массиву $params, чтобы получить нужные значения параметров.
Также, в некоторых случаях, можно использовать функцию array_unique() для удаления дублирующихся значений параметров:
```
parse_str($_SERVER['QUERY_STRING'], $params);
$params = array_unique($params);
```
Важно помнить, что обработка URL-запросов и работы с параметрами - это задача разработчика, и требует внимательности и аккуратности при написании кода.