Hi,

I've upgraded to HAProxy 2.4.11 and now I seem to have a problem with bigger file uploads (>70MB).

When uploading a file I get a 500 back from HAProxy, and if I retry it immediately it most of the time succeeds. Downgrading to 2.4.10 fixes the issue. The log I get is:

Jan 10 12:09:45 [redacted] haproxy[21823]: 2001:67c:[redacted] [10/Jan/2022:12:09:20.543] [redacted]~ [redacted]/[redacted] 11198/0/0/-1/25137 500 1991 - - IH-- 957/282/0/0/0 0/0 {[redacted].[redacted].com|Mozilla/5.0 (Mac|80349066|https://[redacted].[redacted].com/upload} {} “POST https://[redacted].[redacted].com/upload/process?projectId=3431&setId=149 HTTP/2.0”

The frontend is HTTP/2.0 and the backend is NGINX talking HTTP/1.1 (non-TLS).

The config is quite large, but I think it boils down to:

---
frontend [redacted]
        bind [redactes]]:80 transparent
        bind 2001:67c:[redacted]:80 transparent

bind [redacted]:443 transparent ssl crt /etc/haproxy/ssl/[redacted] strict-sni alpn h2,http/1.1 npn h2,http/1.1 bind 2001:67c:[redacted]:443 transparent ssl crt /etc/haproxy/ssl/[redacted] strict-sni alpn h2,http/1.1 npn h2,http/1.1

        mode http
        maxconn 16384

        option httplog
        option dontlog-normal
        option http-ignore-probes
        option forwardfor
        option http-buffer-request

        capture request header Host             len 64
        capture request header User-Agent       len 16
        capture request header Content-Length   len 10
        capture request header Referer          len 256
        capture response header Content-Length  len 10


        acl [some ACLs here]
        acl [some ACLs here]

        http-request deny if [an ACL]
        http-request deny if [another ACL]

        use_backend     [failing-backend]       if [ACL]
        use_backend     
%[req.hdr(host),lower,regsub(^www\.,,i),map(/etc/haproxy/map.d/file.map,yes-backend)]
        default_backend another-backend

backend failing-backend
        fullconn        256
        mode    http

        balance roundrobin

        option abortonclose
        option prefer-last-server
        option redispatch
        option httpchk GET /check-thingy HTTP/1.0
        http-check expect status 200

default-server weight 100 maxconn 20 check inter 2s rise 3 fall 3 slowstart 5m agent-check agent-port 8081 agent-inter 20s
        server server1 [redacted]:80 cookie cookie1
        server server2 [redacted]:80 cookie cookie2

        # Sorry Server
        server outage 127.0.0.1:80 backup

        retries 1
---

If any more info is needed, please let me know.

Regards,

Sander Klein

Reply via email to