HAProxy forwardfor trouble
- 
 Hello everyone, I'm running into trouble with a feature of HAProxy on my pfsense 2.1 cluster. The issue I am running into is related to the "forwardfor" option of HAProxy frontends, where it sets the X-Forwarded-For header for http requests. Unfortunately even though this option is enabled, it still does not set it. I've tried for two days to get this to work without success. I'm running these versions: Version 2.1-RELEASE (amd64) 
 built on Wed Sep 11 18:17:37 EDT 2013
 FreeBSD 8.3-RELEASE-p11HAProxy package: 1.4.24 pkg v 1.1 I'm running nginx on the actual webservers that serve the request. 
- 
 Hey Aviz, 
 Can you post (anonymized) what the /var/etc/haproxy.conf file looks like?
 Also make sure your using mode 'http' as that is the only mode that supports changing contents.
 Or maybe give haproxy-devel package a try..
 Greets PiBa-NL
- 
 Hi Piba, Thanks for your reply. Here it is: global 
 maxconn 9999999
 uid 80
 gid 80
 nbproc 8
 chroot /var/empty
 daemonlisten db_lb 
 bind 10.255.1.242:3306
 mode tcp
 log global
 option dontlognull
 maxconn 10000
 clitimeout 30000
 balance roundrobin
 contimeout 30000
 srvtimeout 30000
 server db2a x:3306 check inter 1000 weight 10
 server db2b x:3306 check inter 1000 weight 10 backuplisten a_lb 
 bind 10.255.1.240:9802
 mode tcp
 log global
 option dontlognull
 maxconn 1000
 clitimeout 30000
 balance source
 contimeout 30000
 srvtimeout 30000
 server aa a:9802 check inter 1000 weight 10
 server ab a:9802 check inter 1000 weight 10listen x_lb_http 
 bind x:80
 mode http
 log global
 option dontlognull
 option httpclose
 option forwardfor
 maxconn 10000
 clitimeout 30000
 balance roundrobin
 contimeout 30000
 srvtimeout 30000
 server xa_http x:80 check inter 1000 weight 10
 server xb_http x:80 check inter 1000 weight 10 backuplisten x_lb_https 
 bind x:443
 mode tcp
 log global
 option dontlognull
 option httpclose
 option forwardfor
 maxconn 10000
 clitimeout 30000
 balance roundrobin
 contimeout 30000
 srvtimeout 30000
 server xa_ssl x:443 check inter 1000 weight 10
 server xb_ssl x:443 check inter 1000 weight 10 backupThe last one, "listen x_lb_https" is the one I'm having trouble with. Note that the mode is in tcp right now, but I've also had it in https with the exact same result. 
- 
 Hey Aviz, When using "mode tcp" haproxy cannot modify headers send through the encrypted SSL connection. You only option when needing to modify https traffic would be to switch to the haproxy-devel package and configure a certificate to perform ssl-offloading/decryption on haproxy, and then modify headers before sending to the backends. You can choose whether or not you want that backend connection to be encrypted again. Which might be required for the application to work properly, though plain http to the backend would take less CPU power. (You might also accomplish this with putting 'stunnel' in front of haproxy 1.4.. But i would not recommend that..) Another option when using haproxy-devel would be to use its transparent client-ip option. So the backend sees the connection coming in from the actual client-ip.. Please note that backend then 'must' use pfSense as a default-gateway for reply traffic to be properly processed by HAProxy. And that connections directly to the backend will fail with the current 'fwd' rules used in ipfw.. Greets PiBa-NL