ฉันใช้ haproxy เพื่อกำหนดเส้นทางสำหรับแอปพลิเคชั่นหลายตัวที่ทำงานบนเซิร์ฟเวอร์เดียว สำหรับโดเมนที่ใช้งานมีโดเมนย่อยหลายสิบโดเมนที่ควรถูกนำไปยังแอปพลิเคชันหนึ่งในไม่กี่แห่ง
ขณะนี้ฉันแสดงรายการโดเมนย่อยเหล่านั้นทั้งหมดในบรรทัด separte การกำหนดค่าส่วนหน้าของฉันมีลักษณะเช่นนี้:
frontend http-in
bind *:80
acl alpha hdr(host) -i alpha.com
acl beta hdr(host) -i beta.com
acl gamma00 hdr(host) -i apple.gamma.com
acl gamma01 hdr(host) -i banana.gamma.com
acl gamma02 hdr(host) -i cherry.gamma.com
acl gamma03 hdr(host) -i durian.gamma.com
acl gamma04 hdr(host) -i elderberry.gamma.com
acl gamma05 hdr(host) -i fig.gamma.com
acl gamma06 hdr(host) -i grapefruit.gamma.com
acl gamma hdr(host) -i gamma.com
use_backend a if alpha
use_backend b if beta
use_backend sub1 if gamma00
use_backend sub1 if gamma01
use_backend sub1 if gamma02
use_backend sub2 if gamma03
use_backend sub2 if gamma04
use_backend sub2 if gamma05
use_backend sub2 if gamma06
use_backend g if gamma
default_backend default
มีวิธีการบรรลุผลลัพธ์ที่คล้ายกันในรูปแบบที่กระชับมากขึ้นหรือไม่? รายชื่อดังกล่าวมีประสิทธิภาพหรือควรเปลี่ยนเป็น regex ดีกว่าไหม
regex
ซึ่งจริงๆแล้วฉันเชื่อว่าคำตอบของคุณ นอกจากนี้โปรดทราบว่าคุณสามารถใช้hdr_beg
แทนhdr
เพื่อให้คุณสามารถระบุโดเมนย่อยเท่านั้น ในที่สุดมันก็เป็นไปได้ที่จะยุบgamma00-06
ACL ของคุณเป็นสอง ACLs หนึ่งต่อsub1
หนึ่งสำหรับsub2
โดยใช้เหมือนกันacl <title>
ในบรรทัด ACL