HAProxy는 하나의 서버 내에서 여러 하위 도메인을 지원합니까?

HAProxy는 하나의 서버 내에서 여러 하위 도메인을 지원합니까?

현재 여러 하위 도메인이 있는 Apache 2 서버 구조가 있습니다. 아래 예와 같이:

<VirtualHost *:80>
 ServerName www.example.com
 ServerAlias example.com
 DocumentRoot /var/www/main
</VirtualHost>

<VirtualHost *:80>
 ServerName subdomain-1.example.com
 ServerAlias subdomain-1.example.com
 DocumentRoot /var/www/sbd1
</VirtualHost>

<VirtualHost *:80>
 ServerName subdomain-2.example.com
 ServerAlias subdomain-2.example.com
 DocumentRoot /var/www/sbd2
</VirtualHost>

나는 이 서버를 복제하고 로드 밸런싱을 수행하기 위해 HAProxy로 새 서버를 만드는 것을 고려하고 있습니다.

HAProxy 지원은 모든 요청을 동일한 IP를 가진 하위 서버로 지정합니까, 아니면 각 하위 도메인에 대해 특정 IP를 가진 특정 서버가 필요합니까?

답변1

각 하위 도메인에 대해 백엔드를 구성해야 하며, 대부분의 요청이 특정 서버에 도달해야 하는 경우 기본 백엔드를 사용해야 할 수도 있습니다. 여러 백엔드를 구성하는 경우 동일한 웹 서버를 가리키는 것을 방해하는 것은 없습니다.

답변2

나는 이것이 실제로 당신이 원하거나 필요로 하는 것이 아닐까봐 두렵습니다. HAproxy는 프록시* 역할을 하는 훌륭한 도구이지만 샘플로 제공하는 사용 사례는 프록시가 아니라 일반 http 서버*와 관련이 있습니다. Apache를 교체하려는 경우 옵션은 예를 들어 nginx일 수 있습니다.


대리- 요청을 확인하고/하거나 콘텐츠를 제공하기 위한 하위 요청을 수행하는 애플리케이션

http 서버- 콘텐츠를 제공하는 애플리케이션


동일한 노드에서도 HAproxy를 프런트엔드로, nginx를 백엔드로 사용할 수 있습니다. HAproxy 구성은 다음과 같습니다(요청한 대로 https가 없음).

frontend http_front
    maxconn 1000
    mode http
    option http-server-close
    option forwardfor
    bind *:80

    acl top_domain hdr(host) -m str www.example.com
    acl top_domain hdr(host) -m str example.com

    acl subdom1 hdr(host) -m str www.subdomain-1.example.com
    acl subdom1 hdr(host) -m str subdomain-1.example.com

    acl subdom2 hdr(host) -m str www.subdomain-2.example.com
    acl subdom2 hdr(host) -m str subdomain-2.example.com


    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto http if !{ ssl_fc }

    use_backend local if subdom1
#   ...
    default_backend local

backend local
    fullconn 1000
    mode http
    timeout http-keep-alive 3000
    server local1 127.0.0.1:8080 check maxconn 100

다른 서버에서 끝나는 더 많은 백엔드가 있을 수 있습니다... 저는 단지 예를 따랐습니다 ;-).

관련 정보