haproxy redirect custom http traffic to a custom https port

I wish to redirect my custom http port traffic to custom https port based on the port I receive traffic on

I have multiple bind statements :

 bind 1.2.3.4:7777
 bind 1.2.3.4:8888
 bind 1.2.3.4:9999 ssl crt /etc/haporxy/somecert.crt

What I've tried :

acl is7777 dst_port 7777
http-request redirect code 301 https://%[req.hdr(Host)]:9999%[capture.req.uri] if is7777

However when I look at the logs in Chrome's dev tools I always see that the value of req.hdr(Host) is preserving the value of the old port so I get redirected to

 https://1.2.3.4:7777/:9999/.

How do i get just the domain name and redirect it to the desired destination port of 9999

Also, something like this :

http-request replace-value Host (.*):7777 \1:9999

Breaks the application flow since there are multiple redirects later. I need to go from 7777(http) to 9999(https) . haproxy version: 1.5


Solution 1:

Either remove port from redirect or replace-value

http-request replace-value Host (.*):7777 \1
http-request redirect location https://%[req.hdr(Host)]:9999%[capture.req.uri] if is7777

OR

http-request replace-value Host (.*):7777 \1:9999
http-request redirect location https://%[req.hdr(Host)]%[capture.req.uri] if is7777