Puncte:0

selectați un back-end haproxy tcp în funcție de ip sursă

drapel de

Am cunoștințe de bază despre haproxy și știu cum să gestionez selecția backend-urilor tcp în funcție de numele serverului SNI.

Liniile relevante sunt

    acl is_myhost req.ssl_sni -i my.host.com
    acl is_otherhost req.ssl_sni -i other.host.com


    use_backend mybackend dacă este_myhost
    use_backend otherbackend dacă este_otherhost

Acum aș dori să le schimb în ceva care să-mi permită să aleg back-end-ul și în funcție de ip-ul sursei, dar nu știu exact sintaxa pentru pseudo configurația de mai jos sau dacă acest lucru este posibil.

    acl is_myhost_for_specif req.ssl_sni -i my.host.com <și ip sursă = 1.2.3.4>
    acl is_myhost_for_others req.ssl_sni -i my.host.com <și ip sursă != 1.2.3.4>
    acl is_otherhost req.ssl_sni -i other.host.com


    use_backend mybackend1 dacă este_myhost_for_specific
    use_backend mybackend2 dacă este_myhost_for_others
    use_backend otherbackend dacă este_otherhost

George Y avatar
drapel vn
ce zici sa intrebi direct haproxy?
gelonida avatar
drapel de
Îmi place persistența și capacitatea de căutare a întrebărilor pe SO, așa că am încercat mai întâi aici. Dar da. trimiterea întrebării către lista de corespondență haproxy (`[email protected]`) este o altă opțiune.
Puncte:2
drapel ng

Pseudo-codul dvs. pentru ACL-uri este incorect, deoarece declarația ACL nu are sintaxă pentru logica AND/OR. Mutați-l într-un loc în care utilizați ACL, ca în exemplul de mai jos.
Pentru IP sursă există src (https://cbonte.github.io/haproxy-dconv/2.2/configuration.html#7.3.3-src), de exemplu.:

Vă rugăm să rețineți că sintaxa pentru potrivirea a două condiții într-o instrucțiune if nu este

use_backend mybackend dacă condiția1 și condiția2

dar doar

use_backend mybackend if condition1 condition2

acl test_network src 192.168.10.0/24
acl test_network src 192.168.20.0/24
acl is_myhost_for_specif req.ssl_sni -i my.host.com

# ambele acls trebuie să fie adevărate (is_myhost **și** test_network)
use_backend mybackend1 dacă este_myhost test_network
use_backend mybackend2 dacă este_myhost

Ordinul de use_backend este important, deci IP-uri de la test_network mergi la mybackend1 iar alţii merg la mybackend2 dacă SNI se potrivește. Declararea test_network ACL de două ori aici înseamnă „src_ip se potrivește cu 192.168.10.0/24 SAU 192.168.20.0/24”

gelonida avatar
drapel de
Mulțumiri. Ei bine, știam că pseudocodul meu este greșit. dar din fericire a fost suficient de bun pentru a-mi explica intenția. Răspunsul tău pare să fie **exact** ceea ce căutam. Nu știam `test_network src`, nu știam că acls poate conține o singură condiție și că instrucțiunea if poate combina acls. Voi marca ca răspuns corect imediat ce l-am testat.
gelonida avatar
drapel de
trucul de a declara un acl de două ori este, de asemenea, de mare ajutor
gelonida avatar
drapel de
În sfârșit, am avut timp să-ți testez răspunsul. Există o mică greșeală în rând `use_backend mybackend1 if is_myhost and test_network` care trebuie să fie `use_backend mybackend1 if is_myhost test_network`` (fără `și`. `și` este implicit. Multumesc din nou
gelonida avatar
drapel de
va marca ca răspuns corect de îndată ce răspunsul este corectat (solicitarea mea de modificare necesită aprobare)
gelonida avatar
drapel de
Am adăugat un alt comentariu la modificările mele, așa cum se pare, că 20 de recenzenți s-au uitat la modificările mele, dar nu s-au simțit confortabil să le accepte. Sper că comentariul meu suplimentar va face schimbarea mai ușor de înțeles/acceptat
gelonida avatar
drapel de
poate puteți aplica modificarea răspunsului dvs. Procedura de revizuire a cererii mele de editare este surprinzător de lentă pentru eroarea serverului. Probabil pentru că haproxy nu este atât de cunoscut. Fără modificările propuse de mine, haproxy se va plânge de un „acl” necunoscut cu numele „și”

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.