THREESCALE-8426 - request path is stripped for proxied https requests #1342
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a fix for THREESCALE-8426 where in some situations the client's request path is stripped away from the proxied upstream request.
Steps to reproduce the issue:
Problem
The problem is that we set the upstream request's path using
uri.path
(when available) here.uri.path
, is upstream.uri.path, whereupstream.uri
is self.uri i.e. only the prefix (aka the upstream path that is hardcoded in the Private URL when the Backend is defined), which explains the problem as described above.Fix
Currently we rewrite
ngx.var.uri
to contain the exact path for the upstream request here by appending the value ofngx.var.uri
to the Backend prefix.This means we should use
ngx.var.uri
as the path for the proxied request here, instead ofuri.path
.