Hello,
we're experiencing issues with HAproxy 1.5-dev11 rejecting GET requests
with UTF8-encoded characters. The encoding happens with Javascript's
Encode function for east european characters (š, č, ž, etc) .
The requests (as seen from 'echo "show errors" | socat stdio
unix-connect:/var/run/haproxy.sock') are:
Total events captured on [25/Jul/2012:08:10:16.070] : 1347
[25/Jul/2012:08:10:16.033] frontend http-in (#2): invalid request
backend <NONE> (#-1), server <NONE> (#-1), event #1346
src 91.216.172.145:40752, session #527199, session flags 0x00000000
HTTP msg state 27, msg flags 0x00000000, tx flags 0x00000000
HTTP chunk len 0 bytes, HTTP body len 0 bytes
buffer flags 0x00809002, out 0 bytes, total 873 bytes
pending 873 bytes, wrapping at 16384, error at position 51:
00000 GET /XXX/YYY?z=39;t=js;sid=index;ssid=\xC2\xA7=index;m=ZZ
00064+ ZZ;ref=http://www.ZZZ.com/lala;num=9;kw=;flash=0;res=lala;r
00134+ e=http%3A%2F%2Fwww.QQQ.com%2Fsi%2FZZZ.html;rmc=1343196615443;cpre
00204+ mium=false;url=http%3A//www.ZZZ.com/lala HTTP/1.1\r\n
00260 Via: 1.0 SREMISA2\r\n
00279 Cookie: CT=true; UID=121617214516589645;
CA1590=0:0:0:4:4:3:0:13395679
00349+ 37; AD8413=0:0:0:1:1:1:0:1339563959;
CA1645=0:0:0:4:4:3:0:1339568497;
00419+ CA1617=0:0:0:4:1:1:0:1341379400;
AD8579=0:0:0:5:2:2:0:1340173696; AD86
00489+ 86=0:0:0:3:3:1:0:1343195149; CA1686=0:0:0:3:3:1:0:1343195149;
CA1688=0
00559+ :0:0:1:1:1:0:1343195915\r\n
00584 Referer: http://www.ZZZ.com/lala\r\n
00623 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
SV1; .N
00693+ ET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152;
.NET CLR
00763+ 3.5.30729; InfoPath.3)\r\n
00787 Host: XXX.com\r\n
00813 Accept: */*\r\n
00826 Accept-Language: sl\r\n
00847 Connection: Keep-Alive\r\n
00871 \r\n
The configuration of haproxy attached.
global
log 127.0.0.1 local1 notice
maxconn 409600
user haproxy
group haproxy
daemon
stats socket /var/run/haproxy.sock gid 117 mode 0660 level operator
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 40000
timeout connect 3000
timeout client 50000
timeout server 50000
option httpclose
option forwardfor
frontend http-in
option httplog
log global
option log-separate-errors
bind XXX:80
acl is_XXX hdr_end(host) -i XXX.net
use_backend XXX if is_XXX
default_backend YYY
backend XXX
mode http
timeout connect 1000
timeout server 1000
timeout http-request 1000
timeout queue 1000
balance leastconn
server A XXX:80 check inter 2000 rise 2 fall 5
server B YYY:80 check inter 2000 rise 2 fall 5
backend YYY
mode http
log global
option httplog
timeout connect 3000
timeout server 3000
timeout http-request 3000
timeout queue 3000
balance leastconn
server C ZZZ:80 check inter 2000 rise 2 fall 5
server D QQQ:80 check inter 2000 rise 2 fall 5