ฉันสับสนมากและไม่สามารถหาคำตอบได้: อะไรทำให้หยุดการดำเนินการของบรรทัดการกำหนดค่าใน haproxy หรือทั้งหมดจะถูกดำเนินการและประเมินในตอนท้าย
ฉันอยู่ภายใต้ความประทับใจว่า if เป็นเงื่อนไข http-คำขอปฏิเสธ [...]
จะทริกเกอร์ มันจะหยุดการดำเนินการตรงนั้น แต่บางตัวอย่างก็ไม่สมเหตุสมผล
ตัวอย่าง (จาก เอกสารแฮพร็อกซี):
ส่วนหน้า fe_main
ผูก :80
# กำหนดตารางติด
stick-table ประเภท ip ขนาด 100k หมดอายุ 24h store http_req_rate(5s),gpc0,gpt0
# เริ่มติดตามคำขอที่คีย์ในตาราง
# คือ IP ต้นทางของลูกค้า
http-ขอแทร็ก-sc0 src
# มีลูกค้าเกิน 20 คำขอใน 5 วินาทีหรือไม่
acl เกิน_rate_limit sc_http_req_rate(0) gt 20
# ตั้งค่าสถานะหากเกินขีดจำกัด
http-request sc-set-gpt0(0) 1 ถ้าเกิน_rate_limit
# ถ้าเกินขีดจำกัด 3 ครั้ง ให้ทำเครื่องหมายว่ารู้จักความเร็ว
aclknown_speeder sc_get_gpc0(0) ge 3
# ปฏิเสธไคลเอนต์ทั้งหมดที่เกินขีด จำกัด หรือเป็นที่รู้จักของ speeders
http-request ปฏิเสธการปฏิเสธสถานะ 429 ถ้าเกิน_rate_limit || Know_speeder
# นับทุกครั้งที่เกินขีดจำกัดหากถูกตั้งค่าสถานะ
acl issue_speeding_ticket sc_get_gpt0(0) eq 1
http-request sc-inc-gpc0(0) ถ้า issue_speeding_ticket
#รีเซ็ตค่าสถานะ
http-คำขอ sc-set-gpt0(0) 0
default_backend be_servers
ถ้า http-คำขอปฏิเสธ
จะหยุดการดำเนินการ (อย่างที่ฉันคิดไว้) ดังนั้นสำหรับสองกรณีนี้จะไม่ทำงานตามที่ตั้งใจไว้ใช่ไหม
- หากไคลเอนต์ส่งคำขอ HTTP ที่เกินขีดจำกัดอย่างต่อเนื่อง acl
เกิน_rate_limit
ประเมินเป็นจริงดังนั้น http-คำขอปฏิเสธ
จะทำให้ sc-inc-gpc0
สายเข้าไม่ได้และจะไม่มีการออกบัตรเร่งให้
- หากลูกค้าใช้เกินอัตราที่กำหนดแล้วหยุดถาวร จะไม่มีการออกใบสั่งเร่งให้เนื่องจากคำขอครั้งล่าสุดถูกปฏิเสธ คล้ายกับกรณีก่อนหน้า
- หากลูกค้าใช้อัตราเกินขีดจำกัดแล้วลดความเร็วลงจนไม่เกินขีดจำกัดอีกต่อไป (และทำงานในลักษณะนี้อีกครั้ง) จะมีการออกใบสั่งเร่งให้ นี่เป็นสิ่งที่ตรงกันข้ามกับสิ่งที่ฉันคาดว่าจะเกิดขึ้น
ถ้า http-คำขอปฏิเสธ
ไม่หยุดการดำเนินการ แล้วมันคลุมเครือมากเกี่ยวกับสิ่งที่จะเกิดขึ้นกับคำขอ? จะเป็นอย่างไรถ้าเป็นอย่างอื่น http-คำขอ
การแข่งขันสาย; คนสุดท้ายจะชนะหรือไม่
ภาพรวมที่ใหญ่กว่านี้คือฉันกำลังพยายามทำบางสิ่งที่คล้ายกับกรณีการใช้งานตัวอย่างให้สำเร็จฉันต้องการตารางที่แสดงจำนวนครั้งที่ IP ต้นทางถึงขีดจำกัดอัตรา (แต่นับเพียงครั้งเดียวสำหรับการรักษาสถานะเกินขีดจำกัดอัตรา)
ฉันไม่พบแหล่งที่มาที่เชื่อถือได้เกี่ยวกับคำสั่งการดำเนินการกฎในไฟล์การกำหนดค่า haproxy ในเอกสารประกอบ บางทีฉันอาจขาดอะไรไป