Add API reverse proxy to webapp nginx config - #13
Open
eljeffeg wants to merge 1 commit into
Open
Conversation
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.
Problem
When running the webapp and GRASP backend as separate containers, the Svelte app makes all API calls to
/api/*(baked in at build time viaAPI_BASE=/api). Without a proxy, nginx would attempt to serve those paths as static files and return 404 for every API call and WebSocket connection.Solution
Added two
locationblocks toapps/grasp/nginx.conf:location /api/— proxies HTTP API requests to the GRASP backend, stripping the/apiprefix:GET /api/knowledge_graphs→http://grasp:6789/knowledge_graphslocation /api/live— proxies the WebSocket streaming endpoint with the requiredUpgrade/Connectionheaders so nginx hands off the persistent connection rather than treating it as a plain HTTP request.Both blocks forward
X-Real-IP,X-Forwarded-For, andX-Forwarded-Protoso the backend sees correct client information.Result
The webapp container on port 80 is the single entry point. The browser never needs direct access to the GRASP backend port; nginx routes static files and API calls appropriately.