Add root_path support to properly route subpaths for SSE and streamable-http endpoints when behind Nginx or other HTTP reverse proxies #797
+6
−0
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 PR adds support for
root_path
in subpath routing of SSE andstreamable-http endpoints when using Nginx or other HTTP middleware as a reverse proxy.Motivation and Context
When deploying applications behind a reverse proxy (e.g., Nginx), it's common to route requests via subpaths like
/server1/
or/server2/
. Without proper handling of these subpaths, SSE and streamable-http endpoints may fail to receive correctly routed requests.This issue was originally reported in #242
Similar functionality exists in other web applications:
How Has This Been Tested?
Yes, this has been tested and running stably in production environments for several days. Both sse and streamable-http endpoints have been verified to work correctly under subpaths behind Nginx.
Breaking Changes
No breaking changes are introduced. Users do not need to update their code or configuration files. This is an optional enhancement that activates only when
root_path
is provided.Types of changes
Checklist
Additional context
This change ensures that the application respects the
root_path
setting for streaming endpoints by utilizing Uvicorn’s built-in support for it. It does not introduce any custom routing logic but instead makes sure that streaming responses behave consistently with regular HTTP responses under subpath deployments.