Hi all,
Le 21/09/2012 20:59, Baptiste a écrit :
HAProxy clearly says that the error is at position 23, which looks to
be a P, but I guess this is due to the copy/paste.
A tcpdump may help understanding what type of character is at this position.
That said, sounds weird that it works with HAProxy 1.4 and does not
anymore with 1.5-dev12.
Not really, allowed characters have changed from haproxy 1.4 to 1.5.
This is detailed in "option accept-invalid-http-request"
http://cbonte.github.com/haproxy-dconv/configuration-1.5.html#option%20accept-invalid-http-request
The concerned paragraph :
"
Similarly, the list of characters allowed to appear in a URI is well
defined by RFC3986, and chars 0-31, 32 (space), 34 ('"'), 60 ('<'), 62
('>'), 92 ('\'), 94 ('^'), 96 ('`'), 123 ('{'), 124 ('|'), 125 ('}'),
127 (delete) and anything above are not allowed at all. Haproxy always
blocks a number of them (0..32, 127). The remaining ones are blocked by
default unless this option is enabled.
"
Alexey, are you sure the issue is not in your apache configuration ?
The RewriteRule looks strange to me :
RewriteRule ^(.*)$ /phpinfo.php?PATH=%1/&%2 [QSA,L]
It uses %2 but it doesn't match any part of the regexp. From your
haproxy trace given by "show error", it looks like haproxy is receiving
garbage values from apache (buffer overflow ?) :
/phpinfo.php?PATH=/РР°Салог/&&pid=42
Could you give a try to 1.5-dev7 ?
cheers
On Fri, Sep 21, 2012 at 8:17 PM, Alexey Vlasov <ren...@renton.name> wrote:
Yes, it's 400 error. But the tuning unfortunately doesn't help.
--
BRGDS. Alexey Vlasov.
On Fri, Sep 21, 2012 at 06:50:30PM +0200, Thomas Heil wrote:
Hi,
If this is error 400. Maybe your Get Request become too long.
Would you mind try increasing your buffsize but leaving maxrewrite on 1024.
e.g
--
global
tune.bufsize 32678
tune.maxrewrite 1024
--
cheers,
thomas
On 21.09.2012 18:17, Alexey Vlasov wrote:
[21/Sep/2012:20:12:41.265] frontend backend_pool610 (#15): invalid request
backend backend_pool610 (#15), server <NONE> (#-1), event #0
src xx.xx.143.35:37769, session #71, session flags 0x00000080
HTTP msg state 26, msg flags 0x00000000, tx flags 0x00000000
HTTP chunk len 0 bytes, HTTP body len 0 bytes
buffer flags 0x00808002, out 0 bytes, total 913 bytes
pending 913 bytes, wrapping at 16384, error at position 23:
00000 GET /phpinfo.php?PATH=/РР°СалР
00034+ ѕРі/&&pid=42 HTTP/1.1
00057 Host: test-l24-apache-aux4.p2
00092 User-Agent: Opera/9.80 (Windows NT 6.1; WOW64; U; ru) Presto/2.10.289
00162+ Version/12.02
00177 Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image
00247+ /png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
00315+
00316 Accept-Language: ru,ru-RU;q=0.9,en;q=0.8
00358 Accept-Encoding: gzip, deflate
00390 Cookie: __ptca=137351919.6tcw1SGtta9M.1334637172.1334637172.1334637172
00460+ .1; __ptv_3S8nQr=6tcw1SGtta9M; __pti_3S8nQr=6tcw1SGtta9M; __ptcz=13735
00530+ 1919.1334637172.1.0.ptmcsr=(direct)|ptmcmd=(none)|ptmccn=(direct)
00597 X-FORWARDED-URI: /%D0%9A%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3/&pid=42
00666+
00667 X-FORWARDED-REQUEST: GET /%D0%9A%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3/&
00737+ pid=42 HTTP/1.1
00754 X-Forwarded-For: xx.x.248.121
00787 X-Forwarded-Host: test-l24-apache-aux4.p2
00834 X-Forwarded-Server: www.test-l24-apache-aux4.p2
00887 Connection: Keep-Alive
00911
On Fri, Sep 21, 2012 at 04:00:00PM +0200, Baptiste wrote:
Hi,
could you run a "show error" on haproxy stats socket?
It will tell you exactly where the error is located.
cheers
On Fri, Sep 21, 2012 at 2:50 PM, Alexey Vlasov <ren...@renton.name> wrote:
Hi.
By using the given below scheme:
=====
apache (fe) - haproxy - apache (PHP)
=====
and the rule in .htaccess
=====
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*)/(.*)$
RewriteCond %2 !\.
RewriteRule ^(.*)$ /phpinfo.php?PATH=%1/&%2 [QSA,L]
=====
haproxy gives badrequest.
Log from apache (fe):
=====
xx.xx.248.121 - - [20/Sep/2012:16:08:51 +0400] "GET
/%D0%9A%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3/&pid=42 HTTP/1.1" 400 90 "-"
"Opera/9.80 (Windows NT 6.1; WOW64; U; ru) Presto/2.10.289
Version/12.02"
=====
haproxy:
=====
Sep 20 16:08:51 l24 haproxy_aux4_pools[18980]: xx.xx.143.35:36564
[20/Sep/2012:16:08:51.744] backend_pool610 backend_pool610/<NOSRV>
-1/-1/-1/-1/0 400 187 - - PR-- 1/0/0/0/10 0/0 {} "<BADREQ>"
=====
My haproxy.conf:
=====
global
daemon
user haproxy
group haproxy
chroot /var/empty
maxconn 4096
ulimit-n 32000
stats socket /var/lib/haproxy/haproxy_aux4.sock level admin mode 600
defaults
log 127.0.0.1 local5 notice
mode http
retries 10
maxconn 2000
timeout client 50000
timeout connect 5000
timeout server 5m
balance roundrobin
option forwardfor except xx.xx.143.35/32
option http-server-close
stats enable
stats uri /aouwl3j?stats
listen backend_pool610 xx.xx.143.35:9610
option httplog
log 127.0.0.1 local6
cookie SERVERID
option httpchk
capture request header Host len 40
server pool610 xx.xx.143.35:8610 weight 255 cookie pool4 check inter 800
fall 3 rise 2 maxconn 500
server pool3 xx.xx.143.35:8101 weight 1 cookie pool1 check inter 2000
fall 3 rise 2 maxconn 250
server pool4 xx.xx.143.35:8102 backup
=====
There's no such 400 error in version 1.4.
--
BRGDS. Alexey Vlasov.
--
Cyril Bonté