Из документации proxy_pass :
Особый случай - использование переменных в операторе proxy_pass: запрошенный URL-адрес не используется, и вы несете полную ответственность за создание целевого URL-адресасебя.
Поскольку вы используете $ 1 в качестве цели, nginx полагается на вас, чтобы точно сказать, что передать.Вы можете исправить это двумя способами.Во-первых, удаление начала URI с помощью proxy_pass тривиально:
location /service/ {
# Note the trailing slash on the proxy_pass.
# It tells nginx to replace /service/ with / when passing the request.
proxy_pass http://apache/;
}
Или, если вы хотите использовать расположение регулярного выражения, просто включите аргументы:
location ~* ^/service/(.*) {
proxy_pass http://apache/$1$is_args$args;
}