haproxyを使用して複数のサブドメインを単一のバックエンドに誘導する


10

私はhaproxyを使用して、単一のサーバーで実行されているいくつかのアプリケーションのルートを指示しています。使用中のドメインの1つには、数十のサブドメインがあり、いくつかのアプリケーションの1つに送信する必要があります。

現在、これらのサブドメインをすべて別の行にリストしています。私のフロントエンド構成は次のようになります:

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れています。のhdr_beg代わりにを使用してhdr、サブドメインのみを列挙できることにも注意してください。最後に、あなたの崩壊することは可能である必要がありgamma00-06、単に2つのACLのための1にACLをsub1し、ための1 sub2単に同じを使用して、acl <title>ACLラインに。
Felix Frank

回答:


15

パフォーマンスを最大に保ち(すべてのヒットで正規表現を回避)、それでも構成をクリーンアップするには、ここでACLの外部ファイルを使用します。たとえば、というファイルがあるとします/etc/haproxy/sub1urls。これはまさに次のとおりです。

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

次に、設定でACLは単純に次のようになります。

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

他のホストをsub2urls同じ方法でファイルに配置すると、構成が次のように減少します。

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

これにより、他のファイルはホストのリストにすぎないため、メンテナンスが非常に簡単になります。編集できるユーザーのリストが開き、リスクも軽減されます。たとえば、これらのACLリストをパペットでこのように編集し、HAProxy構成構文をまったく知る必要がない人がいます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.