Skip to main content
A load balancer created with datumctl alb create forces HTTPS by default, because the command adds a redirect rule like the one on this page. An HTTPProxy that you write yourself doesn’t redirect unless you add the rule. This guide applies when you manage the HTTPProxy directly, or when you need a custom redirect — for example, from a specific path or with a different status code.The rule matches only requests whose x-forwarded-proto header is http. The load balancer listens on both HTTP and HTTPS, so a rule that matched every request would also redirect HTTPS requests to themselves.

Overview

A RequestRedirect filter responds to the client with a redirect response directly — no backend is reached. The Application Load Balancer handles the redirect at the proxy layer. At a high level, this setup:
  1. Matches all incoming requests on a hostname
  2. Returns a 301 Moved Permanently redirect to the same URL using https

Prerequisites

  • datumctl installed and authenticated
  • A valid Project
  • An existing HTTPProxy hostname, or create a new one with this guide

Configuration Steps

Step 1: Set Variables


Step 2: Apply the Redirect Configuration

The RequestRedirect filter requires type: RequestRedirect. No backend is needed — the redirect is returned immediately by the proxy.

Verification

Test that a plain HTTP request receives a redirect:
Expected response:
Confirm that the Location header uses https and preserves the path.

Cleanup


Troubleshooting


Best Practices

  • Use statusCode: 301 for permanent redirects — browsers and crawlers cache these
  • Use statusCode: 302 only when the redirect is temporary (e.g., maintenance)
  • If redirecting to a different hostname, set requestRedirect.hostname explicitly rather than relying on the Host header

Summary

  • HTTP to HTTPS redirects use type: RequestRedirect with scheme: https
  • The type field is required on all filters
  • No backend is needed — RequestRedirect is a terminal filter that responds to the client directly
  • statusCode accepts 301, 302, 303, 307, or 308, and defaults to 302
Last modified on October 23, 2026