Getting Started
Architecture
NServiceBus
Transports
Persistence
ServiceInsight
ServicePulse
ServiceControl
Monitoring
Modernization
Samples

ServicePulse Hosting and Security Guide

Component: ServicePulse

This guide covers hosting and configuration for ServicePulse.

Deployment Scenarios

The below scenarios assume the use of the Container. For additional details on the use of the windows service, see Authentication, TLS, and Forward Headers.

Scenario 0: Default / Backward Compatible Configuration

The default configuration with no additional setup required. Backwards compatible with existing deployments.

Security Features

FeatureStatus
JWT AuthenticationN/A (ServiceControl controlled)
Kestrel HTTPS❌ Disabled
HTTPS Redirection❌ Disabled
HSTS❌ Disabled
Forwarded Headers✅ Enabled (trusts all)
Restricted Proxy Trust❌ Disabled

No additional variables need to be set, however if prefered, the following can be explicity set for the same outcome:

Example Configuration

docker run -e SERVICEPULSE_HTTPS_ENABLED=true \
           -e SERVICEPULSE_FORWARDEDHEADERS_ENABLED=true \
           -e SERVICEPULSE_FORWARDEDHEADERS_TRUSTALLPROXIES=true \
           ...
           particular/servicepulse:latest

Scenario 1: Strict Reverse Proxy with ServicePulse

ServicePulse sits behind a reverse proxy (NGINX, IIS ARR, cloud load balancer) that handles SSL/TLS termination.

Architecture

sequenceDiagram participant Browser participant RP as Reverse Proxy<br/>(SSL termination) participant SP as ServicePulse<br/>(reverse proxy) participant SC as ServiceControl Browser->>RP: HTTPS RP->>SP: HTTP SP->>SC: HTTP

Security Features

FeatureStatus
JWT AuthenticationN/A (ServiceControl controlled)
Kestrel HTTPS❌ Disabled (handled by proxy)
HTTPS Redirection✅ Enabled (optional)
HSTS❌ Disabled (handled by proxy)
Forwarded Headers✅ Enabled
Restricted Proxy Trust✅ Enabled

Example Configuration

docker run -e SERVICEPULSE_FORWARDEDHEADERS_ENABLED=true \
           -e SERVICEPULSE_FORWARDEDHEADERS_TRUSTALLPROXIES=false \
           -e SERVICEPULSE_FORWARDEDHEADERS_KNOWNPROXIES=10.0.0.5 \
           -e SERVICEPULSE_HTTPS_REDIRECTHTTPTOHTTPS=true \
           -e SERVICEPULSE_HTTPS_PORT=443 \
           ...
           particular/servicepulse:latest

Scenario 2: Direct HTTPS with ServicePulse

Kestrel handles TLS directly without a reverse proxy.

Architecture

sequenceDiagram participant Browser participant SP as ServicePulse (Kestrel)<br/>(TLS + SPA serving) participant SC as ServiceControl Browser->>SP: HTTPS SP->>SC: HTTP

Security Features

FeatureStatus
JWT AuthenticationN/A (ServiceControl controlled)
Kestrel HTTPS✅ Enabled
HSTS✅ Enabled
Forwarded Headers❌ Disabled (no proxy)
Restricted Proxy TrustN/A

Example Configuration

docker run -e SERVICEPULSE_HTTPS_ENABLED=true \
           -e SERVICEPULSE_HTTPS_CERTIFICATEPATH=C:\certs\servicepulse.pfx \
           -e SERVICEPULSE_HTTPS_CERTIFICATEPASSWORD=your-password \
           -e SERVICEPULSE_HTTPS_ENABLEHSTS=true \
           -e SERVICEPULSE_HTTPS_HSTSMAXAGESECONDS=31536000 \
           -e SERVICEPULSE_FORWARDEDHEADERS_ENABLED=false \
           -v /path/to/certs:/certs \
           ...
           particular/servicepulse:latest

Scenario 3: End-to-End Encryption with Reverse Proxy and Direct HTTPS

For environments requiring encryption of internal traffic. End-to-end TLS encryption where the reverse proxy terminates external TLS and re-encrypts traffic to ServicePulse over HTTPS.

Architecture

sequenceDiagram participant Client participant RP as Reverse Proxy<br/>(TLS termination) participant SP as ServicePulse (Kestrel)<br/>(TLS + SPA serving) participant SC as ServiceControl (Kestrel)<br/>(TLS + JWT validation) Client->>RP: HTTPS RP->>SP: HTTPS SP->>SC: HTTPS

Security Features

FeatureStatus
JWT AuthenticationN/A (ServiceControl controlled)
Kestrel HTTPS✅ Enabled
HTTPS RedirectionN/A (no HTTP endpoint)
HSTSN/A (configure at proxy)
Forwarded Headers✅ Enabled
Restricted Proxy Trust✅ Enabled
Internal Traffic Encrypted✅ Yes

Example Configuration

docker run -e SERVICEPULSE_HTTPS_ENABLED=true \
           -e SERVICEPULSE_HTTPS_CERTIFICATEPATH=C:\certs\servicepulse.pfx \
           -e SERVICEPULSE_HTTPS_CERTIFICATEPASSWORD=your-password \
           -e SERVICEPULSE_HTTPS_ENABLEHSTS=false \
           -e SERVICEPULSE_FORWARDEDHEADERS_TRUSTALLPROXIES=false \
           -e SERVICEPULSE_FORWARDEDHEADERS_KNOWNPROXIES=10.0.0.5 \
           -v /path/to/certs:/certs \
           ...
           particular/servicepulse:latest

Related Articles