I recently wrote about NGINX reverse proxy reconfiguration after creating or deleting a deployment in GoldenGate. It reminded me that there is an overlooked aspect of the reverse proxy configuration, which is important when trying to automate GoldenGate management with the REST API.
In fact, when using a reverse proxy with a single deployment, some endpoints are different from a multi-deployment configuration.
Let’s take the extract listing endpoint as example: GET /services/v2/extracts. With a basic GoldenGate configuration without NGINX reverse proxy, you could list the extracts with the following URL: https://vmogg:7809/services/v2/extracts
In a single-deployment setting using NGINX, the /services/v2/extracts endpoint is still valid and will list the extracts of your only deployment (API response given below).
{
"$schema": "api:standardResponse",
"links": [
{
"rel": "canonical",
"href": "https://vmogg_single_deployment/services/v2/extracts",
"mediaType": "text/html"
},
{
"rel": "self",
"href": "https://vmogg_single_deployment/services/v2/extracts",
"mediaType": "text/html"
},
{
"rel": "describedby",
"href": "https://vmogg_single_deployment/services/ogg_test_01/adminsrvr/v2/metadata-catalog/extracts",
"mediaType": "application/schema+json"
}
],
"messages": [],
"response": {
"$schema": "ogg:collection",
"items": [
{
"links": [
{
"rel": "parent",
"href": "https://vmogg_single_deployment/services/v2/extracts",
"mediaType": "application/json"
},
{
"rel": "canonical",
"href": "https://vmogg_single_deployment/services/v2/extracts/EXT1",
"mediaType": "application/json"
}
],
"$schema": "ogg:collectionItem",
"name": "EXT1",
"status": "running"
}
]
}
}
In a multi-deployment configuration, the endpoint does not work:
{
"links": [],
"messages": [
{
"$schema": "ogg:message",
"title": "The requested resource does not exist.",
"code": "OGG-12031",
"severity": "ERROR",
"issued": "2026-05-28T18:25:48Z",
"type": "https://www.rfc-editor.org/rfc/rfc9110.html#name-status-codes"
}
]
}
This is an behavior is expected, since you cannot query multiple deployments at once.
- With a single deployment, you can list extracts without specifying the deployment name.
- With multiple deployments, there is no meaning in listing extracts without having to specify which deployment you are targeting.
In the NGINX reverse proxy configuration file, this is materialized by a change of behavior for all endpoints that are deployment-specific. To keep the extracts endpoint as example, here is what the configuration looks like in a single-deployment setup:
location ~ ^/services/ogg_test_01/(?<version>[^/]+)/(?<resource>extracts.*)$ {
location ~ ^/services/(?<version>[^/]+)/(?<resource>extracts.*)$ {
And here is what it looks like in a multi-deployment setup:
location ~ ^/services/ogg_test_01/(?<version>[^/]+)/(?<resource>extracts.*)$ {
location ~ ^/services/ogg_test_02/(?<version>[^/]+)/(?<resource>extracts.*)$ {
With a single deployment, we could access the extracts endpoint through the deployment or with the default endpoint. With multiple deployments, this second option is not available anymore, and you have to specify the deployment name every time.
This is why a best practice is to always use deployment-specific endpoints whenever it is possible, to avoid NGINX behavior changes in GoldenGate when adding or deleting deployments.
Can I still use deployment-specific endpoints if I don’t have a reverse proxy ?
In the same way that it does not make sense to have a single endpoint to list extracts if you have multiple deployments with a reverse proxy, it does not make sense to include the deployment name in the URL if you do not have a reverse proxy. If you try to access this:
http(s)://vmogg:port/services/deployment_name/adminsrvr/v2/extracts
You will receive an error stating that “The requested resource does not exist“. Without a reverse proxy, the port is what determines both the deployment and the service to which you connect.