I'm setting up traffic management for a global external HTTP(S) load balancers. I have two backend Cloud Run services, serverless-lb-www-service
and serverless-lb-api-service
, that I want to serve from the same IP/domain.
I want to configure them like this:
example.com
-> serverless-lb-www-service
example.com/api
-> serverless-lb-api-service
I can use the simple routing rules to serve traffic semi-expected:
path | backend |
---|---|
/* | serverless-lb-www-service |
/api | serverless-lb-api-service |
/api/* | serverless-lb-api-service |
However, I'm running into an issue where I try to access an endpoint that is not the root API end, like example.com/api/test
. I'm always seeing the response I would expect from example.com/api
.
I believe it has something to do with my API (running express.js) receiving the path /api
when it is instead expecting to serve that route from there just /test
. I think I might need to set up a rewrite to remove /api
when it hits the API
Any help would be much appreciated. Thanks
update
I can confirm that the requests as logged in the API are all prefixed with /api
. I can solve my issue by changing all API route handlers to expect the /api
prefix in production environment. However I would still rather do this via a path rewrite so application code is the same in all environments