Hello,
Please see my configuration:
global
log stderr local0
defaults
log global
mode http
log-format “${HAPROXY_HTTPS_LOG_FMT} %HP”
frontend https
bind 10.0.234.239:8443 ssl crt bundle.pem alpn h2,http/1.1,http/1.0
use_backend noslash if { req.hdr(host),host_only -m reg ^noslash.example.com$ }
use_backend slash if { req.hdr(host),host_only -m reg ^slash.example.com$ }
backend noslash
server noslash-backend 2001:67c:1254:e:9:7250:0:1:9080
http-request set-path noslash%[path,regsub(‘^/$’,‘’)]
backend slash
server slash-backend 2001:67c:1254:e:9:7250:0:1:9080
http-request set-path /slash%[path,regsub(‘^/$’,‘’)]
The backend I use is HTTP/1.1 and shows full request line which is coming to it.
When I access my haproxy with HTTP/1.1 with curl:
curl -k --resolve *:8443:10.0.234.239 ``https://slash.example.com:8443/path`` --http1.1
curl -k --resolve *:8443:10.0.234.239 ``https://noslash.example.com:8443/path`` --http1.1
I have such logs:
<134>Mar 12 10:17:17 haproxy[2674090]: 10.0.234.239:35016 [12/Mar/2026:10:17:17.204] https~ slash/slash-backend 0/0/0/1/1 404 425 - - ---- 1/1/0/0/0 0/0 “GET /path HTTP/1.1” 0/0000000000000000/0/0/0 ``slash.example.com/TLSv1.3/TLS_AES_256_GCM_SHA384`` /path
<134>Mar 12 10:17:28 haproxy[2674090]: 10.0.234.239:41972 [12/Mar/2026:10:17:28.763] https~ noslash/noslash-backend 0/0/0/2/2 404 429 - - ---- 1/1/0/0/0 0/0 “GET /path HTTP/1.1” 0/0000000000000000/0/0/0 ``noslash.example.com/TLSv1.3/TLS_AES_256_GCM_SHA384`` /path
And request line is:
GET /slash/path HTTP/1.1
and
GET noslash/path HTTP/1.1
But when I access my haproxy with HTTP/2.0 with curl:
curl -k --resolve *:8443:10.0.234.239 ``https://slash.example.com:8443/path`` --http2
curl -k --resolve *:8443:10.0.234.239 ``https://noslash.example.com:8443/path`` –http2
having logs:
<134>Mar 12 10:17:33 haproxy[2674090]: 10.0.234.239:41974 [12/Mar/2026:10:17:33.898] https~ slash/slash-backend 0/0/0/1/1 404 425 - - ---- 1/1/0/0/0 0/0 “GET ``https://slash.example.com:8443/path`` HTTP/2.0” 0/0000000000000000/0/0/0 ``slash.example.com/TLSv1.3/TLS_AES_256_GCM_SHA384`` ``https://slash.example.com:8443/path
<134>Mar 12 10:17:39 haproxy[2674090]: 10.0.234.239:57464 [12/Mar/2026:10:17:39.678] https~ noslash/noslash-backend 0/0/1/1/2 404 415 - - ---- 1/1/0/0/0 0/0 “GET ``https://noslash.example.com:8443/path`` HTTP/2.0” 0/0000000000000000/0/0/0 ``noslash.example.com/TLSv1.3/TLS_AES_256_GCM_SHA384`` ``https://noslash.example.com:8443/path
The request line is expected for slash version:
GET /slash/path HTTP/1.1
But for noslash access the path is not manipulated:
GET /path HTTP/1.1
I wonder if it’s is expected behavior. I see no errors in the logs.
Is there some path related limit in HTTP/2?
Or just I found a bug?
Regards,
Łukasz