1

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

malimichael
  • 249
  • 1
  • 5
  • 17

1 Answers1

1

You can customize the host and path rules. You can follow the steps through this link. It is also using Cloud Run services and might help you with the rewrite path issues.

Note: Just scroll all the way down if the link will not redirect and show the "Customize the host and path rules" steps.

Marvin Lucero
  • 468
  • 1
  • 8