Proxy Protocol Support in Curl
I’ve came across the following tweet the other day, and I couldn’t be more excited:
https://t.co/P3BbFqx1ro CURLOPT_HAPROXYPROTOCOL: support the HAProxy PROXY protocol
— curl commits (@curlcommits) March 17, 2018
Add --haproxy-protocol for the command line tool
Cl...
This is exciting to me as the work I’ve been doing in viaproxy
had one caveat: testing it works was a bit convoluted, as I was doing by running an HAProxy instance with a custom configuration like the following:
global
debug
maxconn 4000
log 127.0.0.1 local0
defaults
timeout connect 10s
timeout client 1m
timeout server 1m
listen without-send-proxy
mode tcp
log global
option tcplog
bind *:17654
server app1 127.0.0.1:7655
listen with-send-proxy
mode tcp
log global
option tcplog
bind *:27654
bind ipv6@:27654
server app1 127.0.0.1:7654 send-proxy
Luckily commit 6baeb6df
adds a new --haproxy-protocol
that, as documented, will do the following:
Send a HAProxy PROXY protocol header at the beginning of the connection. This is used by some load balancers and reverse proxies to indicate the client’s true IP address and port.
This option is primarily useful when sending test requests to a service that expects this header.
Reading the commit changes is very enlightening, too, as it is a great example of nice and simple C code. I’m looking forward to the release!