---
layout: docs
page_title: upstreams Stanza - Job Specification
description: |-
The "upstreams" stanza allows specifying options for configuring
upstream services
---
# `upstreams` Stanza
The `upstreams` stanza allows configuring various options for managing upstream
services that a [Consul
Connect](/docs/integrations/consul-connect) proxy routes to. It
is valid only within the context of a `proxy` stanza.
For Consul-specific details see the [Consul Connect
Guide](https://learn.hashicorp.com/consul/getting-started/connect#register-a-dependent-service-and-proxy).
```hcl
job "countdash" {
datacenters = ["dc1"]
group "dashboard" {
network {
mode = "bridge"
port "http" {
static = 9002
to = 9002
}
}
service {
name = "count-dashboard"
port = "9002"
connect {
sidecar_service {
proxy {
upstreams {
destination_name = "count-api"
local_bind_port = 8080
datacenter = "dc2"
local_bind_address = "127.0.0.1"
mesh_gateway {
mode = "local"
}
}
}
}
}
}
task "dashboard" {
driver = "docker"
env {
COUNTING_SERVICE_URL = "http://${NOMAD_UPSTREAM_ADDR_count_api}"
}
config {
image = "hashicorpnomad/counter-dashboard:v3"
}
}
}
}
```
## `upstreams` Parameters
- `destination_name` `(string: )` - Name of the upstream service.
- `local_bind_port` - `(int: )` - The port the proxy will receive
connections for the upstream on.
- `datacenter` `(string: "")` - The Consul datacenter in which to issue the
discovery query. Defaults to the empty string, which Consul interprets as the
local Consul datacenter.
- `local_bind_address` - `(string: "")` - The address the proxy will receive
connections for the upstream on.
- `mesh_gateway` ([mesh_gateway][mesh_gateway_param]: nil)
- Configures the mesh gateway
behavior for connecting to this upstream.
### `mesh_gateway` Parameters
- `mode` `(string: "")` - The mode of operation in which to use [Connect Mesh Gateways][mesh_gateways].
If left unset, the mode will default to the mode as determined by the Consul [service-defaults][service_defaults_mode]
configuration for the service. Can be configured with the following modes:
- `local` - In this mode the Connect proxy makes its outbound connection to a
gateway running in the same datacenter. That gateway is then responsible for
ensuring the data gets forwarded along to gateways in the destination datacenter.
- `remote` - In this mode the Connect proxy makes its outbound connection to a
gateway running in the destination datacenter. That gateway will then forward
the data to the final destination service.
- `none` - In this mode, no gateway is used and a Connect proxy makes its
outbound connections directly to the destination services.
The `NOMAD_UPSTREAM_ADDR_` environment variables may be used
to interpolate the upstream's `host:port` address.
Applications are encouraged to connect to `127.0.0.1` and a well defined port
(eg 6379 for Redis) by default. Then when using Consul Connect the application
can be deployed with the Redis upstream's `local_bind_port = 6379` and require
no explicit configuration.
## `upstreams` Examples
The following example is an upstream config with the name of the destination service
and a local bind port.
```hcl
upstreams {
destination_name = "count-api"
local_bind_port = 8080
}
```
[job]: /docs/job-specification/job 'Nomad job Job Specification'
[group]: /docs/job-specification/group 'Nomad group Job Specification'
[task]: /docs/job-specification/task 'Nomad task Job Specification'
[interpolation]: /docs/runtime/interpolation 'Nomad interpolation'
[sidecar_service]: /docs/job-specification/sidecar_service 'Nomad sidecar service Specification'
[upstreams]: /docs/job-specification/upstreams 'Nomad upstream config Specification'
[service_defaults_mode]: https://www.consul.io/docs/connect/config-entries/service-defaults#meshgateway
[mesh_gateway_param]: /docs/job-specification/upstreams#mesh_gateway-parameters
[mesh_gateways]: https://www.consul.io/docs/connect/gateways/mesh-gateway#mesh-gateways