Saya menggunakan haproxy untuk mengarahkan rute untuk beberapa aplikasi yang berjalan di satu server. Untuk salah satu domain yang digunakan ada beberapa lusinan subdomain yang harus diarahkan ke salah satu dari beberapa aplikasi.
Saat ini, saya mencantumkan semua subdomain itu dalam garis separte. Konfigurasi frontend saya terlihat seperti ini:
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
Apakah ada cara untuk mencapai hasil yang serupa dalam bentuk yang lebih ringkas? Apakah listing seperti itu efektif, atau lebih baik beralih ke regex di beberapa titik?
regex
, yang sebenarnya jawaban Anda, saya yakin. Perhatikan juga bahwa Anda dapat menggunakanhdr_beg
alih-alihhdr
sehingga Anda hanya dapat menghitung subdomain. Akhirnya, mungkin untuk menutupgamma00-06
ACL Anda menjadi hanya dua ACL, satu untuksub1
dan satu untuksub2
, hanya dengan menggunakan yang samaacl <title>
di baris ACL.