Ответ 1
Это должно сработать. Nginx должен удалить путь "/test" на локальном сервере вверх. Поэтому я могу сказать, что это не причина. Чтобы сделать это немного лучше, попробуйте следующее:
location /test/ {
proxy_pass http://localserver.com/;
}
2 слэша, которые я добавил в первых двух строках, будут ошибочно совпадать с '/testABC' и отправить неверный запрос на локальный сервер восходящего потока, например.
У вас есть
proxy_redirect
в том же блоке местоположения? Если ваш восходящий локальный сервер перенаправляет, ошибка в этой строке вызовет проблему, описанную вами.
[ ОБНОВЛЕНИЕ] Нашел причину, по которой исходная конфигурация не работала и мои работы: nginx НЕ заменяет часть пути URI, если директива proxy_pass не имеет самого пути URI. Таким образом, мое исправление добавления косой черты (косая черта рассматривается как путь URI) в конце запускает замену пути URI.
Ссылка: http://wiki.nginx.org/HttpProxyModule#proxy_pass
Если необходимо передать URI в необработанной форме, тогда директива proxy_pass должна использоваться без части URI
location /some/path/ { proxy_pass http://127.0.0.1; }