5

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

4

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
| improve this answer | |
  • thanks so much ! works as expected. to add to your solution i added a "if is7777" in the replace-value line. – UtkarshK Apr 24 '18 at 8:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.