Încerc să obțin haproxy să folosească acls cu SNI și nu cooperează. Prezintă certificatul corect, așa că SNI trebuie să funcționeze. Cu toate acestea, nu îl pot face să selecteze un backend pe baza numelui de gazdă din SNI.
Pe care le verific configurația, primesc următoarele
[AVERTISMENT] (21486): Proxy „fe-dr-totalflood.com”: Preluări de eșantion L6 ignorate pe proxy-urile HTTP (declarat la ./haproxy.cfg.tmp:176).
[AVERTISMENT] (21486): Proxy „fe-dr-totalflood.com”: Preluări de eșantion L6 ignorate pe proxy-urile HTTP (declarat la ./haproxy.cfg.tmp:177).
Au fost găsite avertismente.
Fișierul de configurare este valid
Habar nu am ce înseamnă mesajele de eroare și am pus o notă lângă rândurile corespunzătoare din fragmentul următor.
frontend fe-dr-totalflood.com
modul http
lega 172.22.8.229:80
bind 172.22.8.229:443 ssl crt dr-www.totalflood.com.crt crt dr-xml.totalflood.com.crt
## http->https redirecționare
Schema de redirecționare http-request https cu excepția cazului în care { ssl_fc }
## liste de control al accesului
acl https ssl_fc
acl letsencrypt-acl path_beg /.well-known/acme-challenge/
acl www-acl req_ssl_sni dr-www.totalflood.com
acl xml-acl req_ssl_sni dr-xml.totalflood.com
# dacă Let's Encrypt, săriți restul și săriți la backend
use_backend be-letsencrypt dacă letsencrypt-acl
use_backend be-dr-www.totalflood.com dacă www-acl <------ 176
use_backend be-dr-xml.totalflood.com dacă xml-acl <------ 177
default_backend be-no-such-site
#---------------------------------------------
backend be-dr-www.totalflood.com
modul http
echilibru roundrobin
cookie SERVERID insert indirect nocache maxidle 30m
## setați numele gazdei în antet
acl h_host_exists req.hdr(Host) -m găsit
http-request del-header Gazdă dacă h_host_exists
http-request set-header Gazdă www.totalflood.com
Verificați serverul implicit maxconn 100
server scadmzp2wb01 scadmzp2wb01.lereta.net:80 cookie scadmzp2wb01
#---------------------------------------------
backend be-dr-xml.totalflood.com
modul http
echilibru roundrobin
cookie SERVERID insert indirect nocache maxidle 30m
## setați numele gazdei în antet
acl h_host_exists req.hdr(Host) -m găsit
http-request del-header Gazdă dacă h_host_exists
http-request set-header Gazdă xml.totalflood.com
Verificați serverul implicit maxconn 100
server scadmzxml01 scadmzxml01.lereta.net:80 cookie scadmzxml01
#---------------------------------------------
backend be-letsencrypt
server localhost 127.0.0.1:8888
#---------------------------------------------
backend fi-nu-un astfel de site
server localhost 127.0.0.1:8888
Când încerc să accesez oricare dintre site-uri, lovesc întotdeauna backend-ul implicit, indiferent de ce. Am testat acest lucru schimbând backend-ul implicit pentru a merge în alte locuri. Dacă eu
atașați fie la adresa URL calea /.well-known/acme-challenge, haproxy pare să mă trimită la locul corect.
Ceea ce nu pot să-mi dau seama este de ce acls-urile bazate pe informații SNI nu funcționează.
Folosesc versiunea 2.4.2 a haproxy OracleLinux 8.
$ haproxy -v
HAProxy versiunea 2.4.2-553dee3 2021/07/07 - https://haproxy.org/
Stare: ramură acceptată pe termen lung - nu va mai primi remedieri în jurul trimestrului al doilea 2026.
Erori cunoscute: http://www.haproxy.org/bugs/bugs-2.4.2.html
Rulează pe: Linux 5.4.17-2136.304.4.1.el8uek.x86_64 #2 SMP Mar, 8 februarie 11:54:24 PST 2022 x86_64