--- 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