How to redirect every request to defined domain to particular location

Recently, I have moved my personal source code to GitLab. It rendered self-hosted git repository at repository.sleeplessbeastie.eu obsolete, so I have created simple redirection on HAProxy load balanced to cover this specific case.

Permanently redirect every request to repository.sleeplessbeastie.eu domain to https://gitlab.com/milosz.galazka location.

acl is-repository hdr_dom(host) -i repository.sleeplessbeastie.eu
http-request redirect location https://gitlab.com/milosz.galazka code 301 if is-repository

Verify that it works as expected.

$ curl --verbose --silent --location --output /dev/null https://repository.sleeplessbeastie.eu
* Rebuilt URL to: https://repository.sleeplessbeastie.eu/
*   Trying 84.16.240.28...
* TCP_NODELAY set
* Connected to repository.sleeplessbeastie.eu (84.16.240.28) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: repository.sleeplessbeastie.eu
* Server certificate: Let's Encrypt Authority X3
* Server certificate: DST Root CA X3
> GET / HTTP/1.1
> Host: repository.sleeplessbeastie.eu
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Content-length: 0
< Location: https://gitlab.com/milosz.galazka
<
* Connection #0 to host repository.sleeplessbeastie.eu left intact
* Issue another request to this URL: 'https://gitlab.com/milosz.galazka'
*   Trying 52.167.219.168...
* TCP_NODELAY set
* Connected to gitlab.com (52.167.219.168) port 443 (#1)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* Server certificate: gitlab.com
* Server certificate: COMODO RSA Domain Validation Secure Server CA
* Server certificate: COMODO RSA Certification Authority
> GET /milosz.galazka HTTP/1.1
> Host: gitlab.com
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx
< Date: Wed, 24 Jan 2018 01:55:45 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Cache-Control: max-age=0, private, must-revalidate
< Etag: W/"dd7648465b5764790dc2a7f0f11be658"
< Set-Cookie: _gitlab_session=341990252dd0180f509f0ff3bf2d485c; path=/; secure; HttpOnly
< X-Content-Type-Options: nosniff
< X-Frame-Options: DENY
< X-Request-Id: e14e3c77-1c94-49a4-8e60-b564f0fab5fd
< X-Runtime: 0.072131
< X-Ua-Compatible: IE=edge
< X-Xss-Protection: 1; mode=block
< Strict-Transport-Security: max-age=31536000
< Content-Security-Policy: object-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://assets.gitlab-static.net https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/; style-src 'self' 'unsafe-inline' https://assets.gitlab-static.net; img-src * data: blob:; frame-src 'self' https://www.google.com/recaptcha/; frame-ancestors 'self'; connect-src 'self' https://assets.gitlab-static.net wss://gitlab.com https://sentry.gitlap.com https://customers.gitlab.com; report-uri https://sentry-infra.gitlap.com/api/3/csp-report/?sentry_key=a664fdde83424b43a991f25fa7c78987
<
{ [14792 bytes data]
* Connection #1 to host gitlab.com left intact

About Milosz Galazka

Milosz is a Linux Foundation Certified Engineer working for a successful Polish company as a system administrator and a long time supporter of Free Software Foundation and Debian operating system.