You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置HAProxy将HTTP/1.0请求转为HTTP/1.1转发至后端服务器?

问题分析与解决方案

你的当前配置无法实现将HTTP/1.0请求转换为HTTP/1.1转发至后端,核心原因是HAProxy默认会沿用客户端的HTTP协议版本与后端服务器通信——当客户端发送HTTP/1.0请求时,HAProxy也会以HTTP/1.0向后端发送,触发了后端的"426 Upgrade Required"限制。

关键修改点

需要强制HAProxy与后端通信时使用HTTP/1.1,只需在default-server或server配置行中添加http-version 1.1参数即可。

修改后的完整配置

global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 40000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM

defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 15000

listen farm_ssfti
bind *:50121
http-request replace-header Host .* ssfti.test.io
# 添加http-version 1.1强制向后端用HTTP/1.1通信
default-server check ssl verify none alpn http/1.1,h2 http-version 1.1
server ssfpi ssfpi.server.io:443

验证方法

用curl发送HTTP/1.0请求测试:

curl -v --http1.0 http://<HAProxy_IP>:50121

此时HAProxy会将请求转换为HTTP/1.1发送给后端,不会再收到426响应。

补充说明

  • option http-server-close配置本身没问题,它会让HAProxy在与后端完成请求交互后关闭连接,避免长连接占用资源,和HTTP版本转换不冲突。
  • alpn http/1.1,h2仅影响SSL握手时的协议协商,对非SSL的客户端请求(你的bind是普通HTTP)不生效,所以必须显式指定http-version 1.1来强制协议版本。

内容的提问来源于stack exchange,提问作者Christian Zazueta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 11:07:34