Repository navigation
nginx: send Java the path as sent, so an encoded ';' stays one - #572
Merged
Merged
Conversation
The /ContentService/ location's proxy_pass had a URI part, so nginx sent
Tomcat its decoded copy of the path: %3B arrived as ';', which Tomcat
dropped as a matrix parameter. /data/query%3Bx/R-HSA-109581 and
/data/database/version%3B -- no node location's -- were answered by Java
as node's /data/query/{id} and /data/database/version: a node route
answered by Java, which the port rules out, and the refusal of matrix
parameters (#526) undone by encoding the ';'.
Without a URI part Tomcat gets the path as sent, as the exporter location
already does. A spec holds the location to it (shown failing on the old
config). On beta, before and after: those two and an encoded ';' in an id
are now Java's 404s for the path as sent; ten other URLs (Java's and
node's, '//', './', an encoded '/', an export) unchanged. nginx -t ok for
dev, release and production.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The same rule as /ContentService/: no URI part on its proxy_pass, so the service is sent the request's path as it was sent, never nginx's decoded copy. The spec holds both locations to it (shown failing on the AnalysisService's old line). nginx -t ok for dev, release and production. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Spec 006 (
specs/006-content-service-to-node, the matrix-parameter decision of #526). From the review of everything merged since #485.The problem. The
/ContentService/location'sproxy_passhad a URI part, so nginx sent Tomcat its own decoded copy of the path. An encoded;(%3B) arrived as a raw;, which Tomcat dropped as a matrix parameter. So/ContentService/data/query%3Bx/R-HSA-109581and/ContentService/data/database/version%3B, which match no node location, were answered by Java as node's/data/query/{id}and/data/database/version. That is a node route answered by Java, which the port rules out, and it undid #526's refusal of matrix parameters.The fix. Without a URI part, Tomcat gets the path as sent, as the exporter location already does.
/AnalysisService/gets the same treatment (second commit). A spec inroutes.spec.tsholds both locations to it; it was shown failing on each old line.Checks
deploy/nginxspecs: 948 passed.nginx -tpasses for dev, release and production.;inside an id, are now Java's 404s for the path as sent. Before, they were Java's answers for node's routes.//,./, an encoded/(the same status and body, though Tomcat is now sent it encoded), the trailing-slash 301, and a diagram export.🤖 Generated with Claude Code