Попробуйте так. У меня такой вариант работает.
Я его, например, использую для перенаправления всех запросов с домена domain.ru на домен www.domain.ru. При этом строка с адресом и параметрами после редиректа полностью сохраняется.
location / {
rewrite ^(.*)$ http://www.domain.ru$1 permanent;
}
(http/https - подставьте нужное)
Для чистоты эксперимента используем "location /". Остальные локейшены можно на время совсем убрать.
Вместо переменной $server_name с именем домена используем явное указание домена.
В регулярном выражении слэш убираем из первой части и из второй. Слэш будет передаваться внутри параметра.
Если сработает, то после этого можете по очереди приводить к тому виду, как Вы хотите (изменяя location, передавая домен в виде параметра и тп). При этом смотрите, что приводит к отсутствию желаемого результата.
И еще обратите внимание. Если Вы в адресной строке пишите domain.ru/foo/bar/, то не факт, что этот запрос обработает "location /grid". Есть вероятность, что его обрабатывает другой location, который более точно совпадает с адресом. Проверить, какой локейшн отрабатывает можно, например, так
location /grid {
return 503;
}
Ставите для разных локейшнов разный код возврата без всяких дополнительных обработок. Набираете в браузере адрес, получаете код ошибки и понимаете, какой локейшн его отработал.