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?
proxy
load-balancing
haproxy
Hubert OG
sumber
sumber
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.Jawaban:
Untuk menjaga kinerja maksimal (menghindari regex setiap klik) tetapi masih membersihkan konfigurasi, saya akan menggunakan file eksternal untuk ACL Anda di sini. Misalnya, Anda memiliki file yang dipanggil
/etc/haproxy/sub1urls
, yang persis seperti ini:Maka dalam konfigurasi Anda ACL bisa saja:
Menempatkan host lain dalam
sub2urls
file dengan cara yang sama mengurangi konfigurasi Anda ke:Ini membuatnya sangat mudah untuk memelihara file-file lain, karena mereka hanya daftar host. Ini membuka daftar siapa yang dapat mengeditnya dan mengekspos risiko yang lebih kecil juga. Sebagai contoh, kami memiliki orang-orang yang mengedit daftar ACL ini seperti ini di boneka yang sama sekali tidak perlu mengetahui sintaks konfigurasi HAProxy.
sumber