TCP直通不适用于80端口

TCP直通不适用于80端口,tcp,haproxy,Tcp,Haproxy,嗨,我正在尝试基于SNI实现使用TCP传递。它适用于SSL,但不适用于80 配置如下: global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults

嗨,我正在尝试基于SNI实现使用TCP传递。它适用于SSL,但不适用于80

配置如下:

global
log         127.0.0.1 local2
chroot      /var/lib/haproxy
pidfile     /var/run/haproxy.pid
maxconn     4000
user        haproxy
group       haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
 timeout client 30s
 timeout server 30s
 timeout connect 5s

frontend https
 bind *:443
 mode tcp
 tcp-request inspect-delay 5s
 tcp-request content accept if { req_ssl_hello_type 1 }
 acl mytonicssl req_ssl_sni -i staging.mytonic.com
 use_backend mytonic-ssl if mytonicssl


 backend mytonic-ssl
 mode tcp
 balance roundrobin
 stick-table type binary len 32 size 30k expire 30m
 acl clienthello req_ssl_hello_type 1
 acl serverhello rep_ssl_hello_type 2
 tcp-request inspect-delay 5s
 tcp-request content accept if clienthello
 tcp-response content accept if serverhello
 stick on payload_lv(43,1) if clienthello
 stick store-response payload_lv(43,1) if serverhello
 option ssl-hello-chk
 server server1 10.10.17.222:8443 check

 frontend http
 bind *:80
 mode tcp
 acl mytonic_http hdr_dom(host) -i staging.mytonic.com
 use_backend mytonic_nonssl if mytonic_http


 backend mytonic_nonssl
 mode tcp
 balance roundrobin
 server server1 10.10.17.222:8080 check

如果我添加了默认后端,那么它可以工作。但这不是虚拟主机解决方案。我的haproxy版本是:HA Proxy版本1.5.18 2016/05/10。非常感谢您的帮助。

SNI是包含目标主机名的TLS扩展。由于它是TLS扩展,因此只能与SSL/TLS通信一起使用。与普通HTTP(即无SSL/TLS)匹配的机制是HTTP主机头。但要基于此标头进行平衡,需要使用模式http(默认)而不是模式tcp。另见