Puncte:0

execuția haproxy a liniilor după ce linia de respingere a cererii http s-a oprit sau nu?

drapel id

Sunt foarte confuz și nu pot găsi răspunsul: ce ar determina oprirea execuției liniilor de configurare în haproxy sau toate ar fi executate și evaluate la sfârșit?

Aveam impresia că un dacă este condițional http-request deny [...] s-ar declanșa, ar opri execuția chiar acolo, dar apoi unele exemple nu au niciun sens.

Exemplu (din haproxy docs):

frontend fe_main
   lega :80

   # definiți tabelul stick
   tip stick-table dimensiune ip 100k expiră 24 de ore magazin http_req_rate(5s),gpc0,gpt0

   # începeți să urmăriți cererile unde cheia din tabel
   # este IP-ul sursă al clientului
   http-request track-sc0 src

   # clientul a depășit 20 de solicitări în 5 secunde?
   acl depășește_rate_limit sc_http_req_rate(0) gt 20

   # semnalați-le dacă au depășit limita
   http-request sc-set-gpt0(0) 1 dacă depășește_rate_limit

   # dacă au depășit limita de 3 ori, marcați-i ca viteză cunoscut
   acl known_speeder sc_get_gpc0(0) ge 3

   # respinge toți clienții care depășesc limita sau sunt vitezători cunoscuți
   http-request deny deny_status 429 dacă depășește_rate_limit || cunoscut_viteză

   # numără de fiecare dată când depășesc limita dacă au fost semnalate
   acl issue_speeding_ticket sc_get_gpt0(0) eq 1
   http-request sc-inc-gpc0(0) dacă issue_speeding_ticket

   # resetați steagul
   http-request sc-set-gpt0(0) 0

   default_backend be_servers

Dacă http-request deny ar opri execuția (așa cum am crezut că va fi), atunci pentru două cazuri acest lucru nu va funcționa așa cum s-a intenționat, nu?

  • Dacă clientul trimite o încărcare susținută peste limită de solicitări HTTP, acl depășește_limita_rată evaluează la adevărat, astfel încât http-request deny va face sc-inc-gpc0 linia inaccesabilă și nu va fi emisă nicio amenda de viteză.
  • În cazul în care clientul depășește limita tarifului și apoi se oprește pentru totdeauna, nu se va emite nicio amendă pentru depășirea vitezei, deoarece ultima solicitare a fost respinsă, similar cazului anterior.
  • În cazul în care clientul depășește limita de tarif și apoi încetinește pentru a nu mai depăși limita (și astfel se comportă din nou) se va emite avizul pentru depășire. Acesta este inversul a ceea ce m-aș fi așteptat să se întâmple.

Dacă http-request deny nu oprește execuția, atunci este foarte ambiguu ce s-ar întâmpla cu cererea? Dacă altul http-cerere potriviri de linie; va castiga ultimul?

Imaginea de ansamblu aici este că încerc să realizez ceva similar cu exemplul de caz de utilizare.Am nevoie de un tabel care să enumere de câte ori un IP sursă a atins limita de rată (dar doar numărat o dată pentru menținerea unei stări de depășire a limitei de rată).

Nu reușesc să găsesc o sursă autorizată despre ordinea de execuție a regulilor în fișierele de configurare haproxy în documentație. Poate imi scapa ceva.

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.