HTTP
Description
The HTTP service is made up of two components, an HTTP server running on the Upstream DD Engine and an HTTP client running on the Downstream DD Engine. The service forwards HTTP POST requests from clients in the source network to a pre-configured server in the destination network.
The Upstream service waits for an incoming connection from any remote host in the source network. When a connection has been established, incoming requests are received and then directly forwarded to the Downstream service. The Upstream service can handle incoming requests from multiple sources concurrently.
When the Upstream service has successfully forwarded a request, it will return a success response to the client. If for some reason the Upstream service fails to receive or forward a request, a suitable error response will be returned to the client.
When the Downstream service receives a request from the Upstream service it will establish a connection to the pre-configured host in the destination network, and forward the request to it.
Supported versions
The following versions of respective protocols are supported by the HTTP service:
| Protocol | Supported version(s) | 
|---|---|
| HTTP | 1.0 and 1.1 | 
| TLS | 1.2 and 1.3 | 
Method
The service only forwards POST requests, i.e. requests containing the method POST.
If a request is sent to the Upstream service containing a request method other than POST, a 405 Method Not Allowed response will be returned.
URL
The path and query parameter components of the URL is forwarded as is. The scheme and host components of the URL are modified in accordance with the service configuration to correctly identify the destination server.
For example, if a request is sent to the Upstream service using the following URL:
http://upstream.service:8080/path/to/resource?key1=value1&key2=value2
the URL might look like this when forwarding the request to the destination server, given that the Downstream service has been configured to forward incoming requests to address downstream.service at port 9090.
http://downstream.service:9090/path/to/resource?key1=value1&key2=value2
Headers
Headers are forwarded without being modified, with a few exceptions:
- The Hostheader is updated to contain the address of the destination server before the request is being forwarded.
- 'Hop-by-hop' headers are meaningful only for a single transport-level connection, and must not be retransmitted by proxies or cached. These headers are therefore dropped by the Upstream service and later the Downstream service will add headers that are relevant for the connection to the destination server.
Body
The service forwards all request bodies as is, regardless of content type.
Configuration
In this section, the HTTP service parameters are described in detail. Parameters are divided into sections, HTTP Server Upstream and HTTP Client Downstream, in the same way as they are displayed when configuring the service using the DD Manager.
In DD Manager, as well as in the parameter descriptions below, mandatory parameters are indicated by asterisks (*).
HTTP Server Upstream
Connection parameters
| Parameter | Description | Format | 
|---|---|---|
| Port * | The TCP port at which the service will listen for incoming connection requests. | Integer within range 1-65535 | 
TLS
| Parameter | Description | Format | 
|---|---|---|
| Mode * | A selection of TLS modes is available. | Available options: Off and TLS With CA | 
| Server certificate * | The x.509 server certificate (in PEM format) which will be used by clients to authenticate the server. | File | 
| Private key * | The private key of the provided server certificate (in PEM format). | File | 
HTTP Client Downstream
Connection parameters
| Parameter | Description | Format | 
|---|---|---|
| Address * | Address of the destination server to which requests will be forwarded, either an IP address or a hostname. | Internet host name, see RFC 1123, section 2.1 | 
| Port * | TCP port that the service will use to connect to the remote host. | Integer within range 1-65535 | 
| Request timeout * | The number of seconds the service will wait for a response from the destination server before raising a timeout error. | Integer within range 1-300 | 
TLS
| Parameter | Description | Format | 
|---|---|---|
| Mode * | A selection of TLS modes is available. | Available options: Off and TLS With CA | 
| CA bundle * | A x.509 certificate authority (CA) bundle which contains one or more certificates which will be used to authenticate the remote server. | File | 
TLS
The service can be configured to use HTTPS (HTTP over TLS). TLS versions 1.2 and 1.3 are supported.
The use of TLS can be configured independently in the Upstream and Downstream components of the service. This means that you can have TLS enabled on one side but not the other (both sides can of course be configured to use TLS simultaneously).
For more information regarding PKI and certificate generation, visit the Certificates page. Note that for the HTTP service, you only need a CA certificate/bundle and a server certificate.