Kong: strip_path decides whether the matched prefix reaches the upstream

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.

Code
# 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
Output
# 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.
Advertisement

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