Birkaç alt alanı haproxy ile tek bir arka uca yönlendirin


10

Tek bir sunucu üzerinde çalışan birkaç uygulama için yönlendirmek için haproxy kullanıyorum. Kullanılan alanlardan biri için, birkaç uygulamadan birine yönlendirilmesi gereken birkaç düzine alt alan vardır.

Şu anda, tüm bu alt alanları ayrı bir satırda listeliyorum. Ön uç yapılandırmam şöyle görünüyor:

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

Daha kısa bir formda benzer bir sonuç elde etmenin bir yolu var mı? Böyle bir liste etkili midir yoksa bir noktada normal ifadeye geçmek daha mı iyi olur?


Heh, sorunuz regexaslında cevabınız olan anahtar kelimeyi içeriyor, inanıyorum. hdr_begBunun yerine, hdryalnızca alt alan adlarını numaralandırmak için kullanabileceğinizi de unutmayın . Son olarak, gamma00-06ACL'lerinizi sadece ACL hattında aynı sub1olanı sub2kullanarak biri için diğeri için sadece iki acl <title>ACL'ye daraltmanız mümkün olmalıdır .
Felix Frank

Yanıtlar:


15

Performansı maksimumda tutmak (her vuruşta normal ifadeden kaçınmak), ancak yine de yapılandırmayı temizlemek için, burada ACL'leriniz için harici bir dosya kullanırım. Diyelim /etc/haproxy/sub1urlski tam olarak şu şekilde adlandırılan bir dosyanız var :

apple.gamma.com
banana.gamma.com
cherry.gamma.com

Sonra yapılandırmanızda ACL basitçe şöyle olabilir:

acl is_sub1 hdr(host) -i -f /etc/haproxy/sub1urls

Diğer ana bilgisayarları sub2urlsaynı şekilde bir dosyaya koymak yapılandırmanızı aşağıdakilere indirir:

frontend http-in
    bind *:80

    acl alpha     hdr(host) -i alpha.com
    acl beta      hdr(host) -i beta.com
    acl is_sub1   hdr(host) -i -f /etc/haproxy/sub1urls
    acl is_sub2   hdr(host) -i -f /etc/haproxy/sub2urls
    acl gamma     hdr(host) -i gamma.com

    use_backend a if alpha
    use_backend b if beta
    use_backend sub1 if is_sub1
    use_backend sub2 if is_sub2
    use_backend g if gamma

    default_backend default

Bu, yalnızca ana bilgisayar listeleri oldukları için diğer dosyaları korumayı çok kolaylaştırır. Bunları kimlerin düzenleyebileceğini listeler ve daha az risk sunar. Örneğin, bu ACL listelerini kuklada HAProxy yapılandırma sözdizimini hiç bilmek zorunda olmayan kişiler düzenliyoruz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.