haproxy를 사용하여 여러 하위 도메인을 단일 백엔드로 연결


10

단일 서버에서 실행되는 여러 응용 프로그램의 경로를 지정하기 위해 haproxy를 사용하고 있습니다. 사용중인 도메인 중 하나에 대해 수십 개의 하위 도메인이 있으며 몇 개의 응용 프로그램 중 하나에 연결되어야합니다.

현재 모든 하위 도메인을 separte 줄에 나열합니다. 내 프론트 엔드 구성은 다음과 같습니다.

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

더 간결한 형태로 유사한 결과를 얻는 방법이 있습니까? 그러한 목록이 효과적입니까, 아니면 어느 시점에서 정규식으로 전환하는 것이 더 좋습니까?


Heh, 귀하의 질문에 키워드가 포함되어 있습니다. regex실제로 귀하의 답변입니다. 또한 하위 도메인 만 열거 할 수 있도록 hdr_beg대신 사용할 수 있습니다 hdr. 마지막으로, 당신의 붕괴 할 수 있어야 gamma00-06두 ACL을, 하나에 ACL을 sub1하고 하나 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

따라서 다른 파일은 호스트 목록 일 뿐이므로 유지 관리가 매우 쉽습니다. 편집 할 수있는 사람 목록이 열리고 위험도 줄어 듭니다. 예를 들어, HAProxy 구성 구문을 전혀 몰라도 꼭두각시에서 이와 같은 ACL 목록을 편집하는 사람들이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.