With the default of true, /billing/invoices is proxied as /invoices. Turn it off and the upstream sees the full path - a 404 either way if you get it wrong.
# service url = http://billing.internal:8080/v2
curl -X POST http://localhost:8001/services/billing/routes \
--data 'paths[]=/billing' --data strip_path=true
# client: GET /billing/invoices/42
# upstream: GET /v2/invoices/42
curl -X PATCH http://localhost:8001/routes/billing-route --data strip_path=false
# client: GET /billing/invoices/42
# upstream: GET /v2/billing/invoices/42
# Set strip_path=false when the upstream already expects the prefix -
# a Spring Boot app with server.servlet.context-path=/billing, for instance.
#
# Confirm which one happened by looking for X-Kong-Upstream-Latency in the
# response: if it is missing, Kong never reached the upstream at all.
Run this yourself in the Online Java Compiler, spin up a live REST API in the API Sandbox, or practise with Java interview questions.
Published 2026-08-25