description |
---|
Use your own domain to serve the RudderStack Javascript SDK and send events to your own domain. |
If you wish to use your own domain to route your events and/or proxy our JavaScript SDK, there are three endpoints you can proxy via your own CDN. You will need access to your domain’s DNS settings as well as your CDN settings.
The 3 endpoints are:
cdn.rudderlabs.com
for loading the Javascript SDKapi.rudderlabs.com
for fetching the source configuration based on yourwriteKey
<your_data_plane_url>
for sending events to the RudderStack server
To use your own domain for these, you’ll need to route traffic through your CDN.
{% hint style="info" %} Note that you will incur CDN charges for this traffic if you choose to use your own domain. {% endhint %}
For each endpoint, you'll need to create a CDN distribution and add a CNAME record on your domain for the distribution domain. The examples below are using CloudFront, but the settings should be similar regardless of your CDN.
You'll start by creating a new distribution for serving the JavaScript SDK.
Field | Setting |
---|---|
Origin Domain Name | cdn.rudderlabs.com |
Origin Protocol Policy | HTTPS Only |
Default Cache Behavior Settings
Field | Setting |
---|---|
Viewer Protocol Policy | Redirect HTTP to HTTPS |
Allowed HTTP Methods | GET , HEAD , OPTIONS , PUT , POST , PATCH , DELETE |
Cache and origin request settings | Use legacy cache settings |
Forward Cookies | All |
Query String Forwarding and Caching | Forward all, cache based on all |
Distribution Settings
Field | Setting |
---|---|
Alternate Domain Names (CNAMEs) | <subdomain.yourdomain.com> |
SSL Certificate | Custom SSL Certificate (more info) |
Custom SSL Client Support | Clients that support SNI |
Click Create Distribution and wait for CloudFront to be deployed.
Once your distribution is deployed, you’ll need to create a CNAME record on your domain for the subdomain you wish to use and the distribution url.
Name | Value |
---|---|
Subdomain you wish to use (which was used in the creation of the distribution). This will vary based on your DNS provider but will typically be just the subdomain. Example: for cdn.yourdomain.com you would use cdn |
The CDN URL for the distribution created. Example: d3jlkfchu4u.cloudfront.net |
Once setup and DNS propagation has completed, you’ll be able to change the URL for the SDK.
Before:
<script src="https://cdn.rudderlabs.com/v1/rudder-analytics.min.js"></script>
After:
<script src="https://subdomain.yourdomain.com/v1/rudder-analytics.min.js"></script>
Normally all events are sent to your data plane url <your_data_plane_url>
. To have events routed through your own domain, you’ll need to setup a proxy to that and then use your own url for DATA_PLANE_URL
when initializing the SDK.
The settings for sending events will be the same as the settings for serving the JavaScript SDK except for the following:
Field | Setting |
---|---|
Origin Domain Name | <your_data_plane_url> |
Alternate Domain Names (CNAMEs) | <subdomain.yourdomain.com> |
The settings for the CNAME record will be the same as the settings for serving the JavaScript SDK. You'll need to use the newly created distribution domain and the subdomain you set for it.
Once setup and DNS propagation has completed, you’ll want to use the newly created url as your DATA_PLANE_URL
when initiating the sdk.
Before:
rudderanalytics.load("1iYTYFYkfteuXxTj3eEt5CmeLvO", "https://hosted.rudderlabs.com")
After:
rudderanalytics.load("1iYTYFYkfteuXxTj3eEt5CmeLvO", "https://subdomain.yourdomain.com")
You should be able to confirm in the network tab of your browser console that events going to /track
, /identify
and /page
are being routed through your own domain and not the rudderstack.com domain.
When the javascript SDK is loaded, it uses the writeKey
for your selected source to fetch the Source Configuration from RudderStack. This determines which native sdks may be needed and which destinations are used.
The call to fetch the sourceConfig is sent to api.rudderstack.com
with the writeKey
for your source used an authorization header. For this reason, this distribution will be slightly different as we will need to explicitly whitelist the Authorization header to make sure it is sent along with each request.
The settings for sending events will be the same as the settings for serving the JavaScript SDK except for the following:
Field | Setting |
---|---|
Origin Domain Name | api.rudderlabs.com |
Alternate Domain Names (CNAMEs) | <subdomain.yourdomain.com> |
We also need to add a Whitelisting for the Authorization headers in Default Cache Behavior Settings.
As with serving the JavaScript SDK and Sending events, you'll choose Use legacy cache settings
Under Cache Based on Selected Request Headers, you'll choose Whitelist.
Choose Authorization and Add >> to whitelist the Authorization Header
The settings for the CNAME record will be the same as the settings for serving the JavaScript SDK. You'll need to use the newly created distribution domain and the subdomain you set for it.
To use a custom URL to fetch the sourceConfig, we need to add it as an option when loading the JavaScript SDK.
rudderanalytics.load("1iYTYFYkfteuXxTj3eEt5CmeLvO", "https://hosted.rudderlabs.com",
{
configUrl: 'https://subdomain.yourdomain.com'
}
);
To use your own domain, you'll need to Request or Import a certificate with your CDN provider. The following are the steps to use AWS Certificate Manager with CloudFront:
When choosing your SSL certificate on CloudFront, you'll be given the option to do so:
From there you'll choose your subdomain or use a wildcard domain (*.yourdomain.com
) to be able to setup multiple subdomains.
ACM will guide you through verifying by email or DNS TXT records and you'll be able to choose your own domain for SSL certificates once verified.
For more information on any of the sections in this guide, please feel free to contact us. You can also start a conversation on our Slack channel, we will be happy to help you.