Send PROXY protocol header from HAProxy

23,748

After posting on the HAProxy mailing list ([email protected]) I got the answer that I need to add either send-proxy or send-proxy-v2 to my backend server definitions.

My updated config file has the line:

server TestServer01 10.6.186.24:48080 send-proxy

...which sends version 1 of the PROXY protocol.

To send version 2, change this to

server TestServer01 10.6.186.24:48080 send-proxy-v2

Share:
23,748

Related videos on Youtube

Wad
Author by

Wad

Updated on September 18, 2022

Comments

  • Wad
    Wad almost 2 years

    I've probably got lost in the masses of documentation on this subject, but I'm trying to configure my HAProxy process to send the PROXY protocol header as described at http://www.haproxy.org/download/1.8/doc/proxy-protocol.txt. This is because I am having to write support for the PROXY protocol into a C++ server (in order for it to have access to the client IP/port) and I want to test my code is working properly with the parsing of the PROXY header.

    Here is my minimal config file:

    global
       maxconn 4096
    
    defaults
       log   global
       mode   http
       retries   3
       option redispatch
       maxconn   2000
       timeout connect 5000
       timeout client  50000
       timeout server  50000
    
    frontend TestServerTest
        bind 10.6.186.24:54781
        mode tcp
        default_backend TestServernodes
    
    backend TestServernodes
        mode tcp
        # Note there is no 'check' after the below line unlike the others as we don't want to send the
        # healthcheck ("OPTIONS / HTTP/1.0"...) string to the TestServer as it doesn't understand it!
        server TestServer01 10.6.186.24:48080
    

    What I am finding is that when I start HAProxy and connect to 54781, the first data that TestServer at 48080 receives is the data which is sent from my client; it is not the PROXY header described at the link I posted.

    Can someone please tell me what I am missing in my configuration that is preventing the PROXY header being sent to my backend server?