Tôi đang sử dụng haproxy để định tuyến trực tiếp cho một số ứng dụng đang chạy trên một máy chủ. Đối với một trong những tên miền đang sử dụng, có một vài chục tên miền phụ nên được hướng đến một trong một vài ứng dụng.
Hiện tại, tôi liệt kê tất cả các tên miền phụ đó trong một dòng separte. Cấu hình frontend của tôi trông như thế này:
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
Có cách nào để đạt được kết quả tương tự ở dạng ngắn gọn hơn không? Là danh sách như vậy có hiệu quả, hoặc sẽ tốt hơn để chuyển sang một regex tại một số điểm?
regex
, thực tế đó là câu trả lời của bạn, tôi tin thế. Cũng lưu ý rằng bạn có thể sử dụnghdr_beg
thay vìhdr
để bạn chỉ có thể liệt kê các tên miền phụ. Cuối cùng, có thể thu gọngamma00-06
ACL của bạn thành chỉ hai ACL, một chosub1
và một chosub2
, chỉ đơn giản bằng cách sử dụng tương tựacl <title>
trong dòng ACL.